2016-04-20 12 views
0

Ich versuche, eine Karte zu bekommen, die im Grunde Karte ist und booktype und count Informationen von JOOQ hat. Ich habe die folgenden und verschiedene Kombinationen ausprobiert, aber immer Fehler bekommen. jede mögliche Hilfe würde geschätzt:JOOQ Abrufen einer Karte von selectCount

Map<String, Result<Record1<Integer>>> countMap = ctx.selectCount().from(BOOKTABLE) 
     .groupBy(BOOKTABLE.TYPE) 
     .fetchMAP(BOOKTABLE.TYPE); 

Antwort

2

Sie nicht selectCount() in diesem Fall verwenden können, weil das eine SELECT COUNT(*) Abfrage produzieren wird, wenn Sie wirklich eine SELECT type, COUNT(*) Abfrage möchten.

Hier sind mehrere Möglichkeiten, wie das zu tun, je nachdem, welche Art Sie versuchen, aus der Abfrage zu erhalten:

// Assuming this static import: 
import static org.jooq.impl.DSL.*; 

Map<String, Integer> map1 = 
ctx.select(BOOKTABLE.TYPE, count()) 
    .from(BOOKTABLE) 
    .groupBy(BOOKTABLE.TYPE) 
    .fetchMap(BOOKTABLE.TYPE, count()); 

Oder:

Map<String, Record2<String, Integer>> map2 = 
ctx.select(BOOKTABLE.TYPE, count()) 
    .from(BOOKTABLE) 
    .groupBy(BOOKTABLE.TYPE) 
    .fetchMap(BOOKTABLE.TYPE); 

Oder:

Map<String, List<Integer>> map3 = 
ctx.select(BOOKTABLE.TYPE, count()) 
    .from(BOOKTABLE) 
    .groupBy(BOOKTABLE.TYPE) 
    .fetchGroups(BOOKTABLE.TYPE, count()); 

Oder:

Map<String, Result<Record2<String, Integer>>> map4 = 
ctx.select(BOOKTABLE.TYPE, count()) 
    .from(BOOKTABLE) 
    .groupBy(BOOKTABLE.TYPE) 
    .fetchGroups(BOOKTABLE.TYPE); 
+0

Vielen Dank sir – emraldinho

+0

@Lukas Eder Was passiert, wenn die Spalte BOOKTABLE.TYPE Null- und Leerwerte hat? Wird diese Abfrage die leeren und null-Werte zusammen als null gruppieren? –

+0

@vinaypatlolla: In Oracle: Ja, sie sind das Gleiche. In anderen Datenbanken: Nein, "NULL" und "" sind nicht dasselbe. –

Verwandte Themen