SQL Problem mit Count + Group By

Jens81

Gesperrter Benutzer
Hallo zusammen,

aus einer Java Anwendung schicke ich SQL Abfragen zum Zählen von Werten auf eine Datenbank.

Jetzt möchte ich aber z.B. nur ungern 5 einzelne Abfragen abschicken:
Java:
String abfrage1 = SELECT COUNT(1) FROM tab1 as alt, tab2 as neu WHERE alt.KDNR = neu.KDNR AND alt.rank = 1 AND neu.rank = 1;
String abfrage2 = SELECT COUNT(1) FROM tab1 as alt, tab2 as neu WHERE alt.KDNR = neu.KDNR AND alt.rank = 1 AND neu.rank = 2;
String abfrage3 = SELECT COUNT(1) FROM tab1 as alt, tab2 as neu WHERE alt.KDNR = neu.KDNR AND alt.rank = 1 AND neu.rank = 3;
String abfrage4 = SELECT COUNT(1) FROM tab1 as alt, tab2 as neu WHERE alt.KDNR = neu.KDNR AND alt.rank = 1 AND neu.rank = 4;
String abfrage5 = SELECT COUNT(1) FROM tab1 as alt, tab2 as neu WHERE alt.KDNR = neu.KDNR AND alt.rank = 1 AND neu.rank = 5;

sondern eine Abfrage mit Group By verwenden:
Java:
String abfrage = SELECT COUNT(1) FROM tab1 as alt, tab2 as neu WHERE alt.KDNR = neu.KDNR AND alt.rank = 1 AND neu.rank < 6 GROUP BY neu.rank;

Problem ist nun, dass, falls in einer Gruppe 0 Werte vorkommen, nicht 5 Ergebnisse, sondern nur 4 zurückgeliefert werden. Ist es möglich, auch eine 0 zurückzubekommen? Für eine Weiterverarbeitung wäre es nötig / hilfreich, wenn die Rückgabe immer die gleiche Form / Struktur hat.

Ich weiß, es ist mehr eine SQL Frage... hoffe, dass sich trotzdem der ein oder andere hier damit besser auskennt.

Danke und Gruß,
Jens
 
Zuletzt bearbeitet:
S

SlaterB

Gast
eine Idee:
du bräuchtest eine Dummy-Tabelle mit Einträgen 1-n,
dann ein left join darüber

-----

so wie du die Abfrage bisher hast, ist die Reihenfolge nicht gesichert, noch ein ORDER BY?
 

Jens81

Gesperrter Benutzer
Stimmt, das ORDER BY fehlte natürlich noch. Die Lösung mit der Dummy Tabelle ist möglich, aber nicht wirklich schön...


Ich glaube, dass hilft hier leider nicht weiter. Das Problem ist ja nicht, dass Missing Values nicht mitgezählt werden, sondern dass aufgrund der WHERE Bedingung (in bestimmten Konstellationen) keine 5 Gruppen zustande kommen.

Wenn es für jede Gruppe Treffer gibt, sieht das Ergebnis z.B. so aus (via Group by Abfrage):
987985
200341
189112
98552
19244

Gibt es aber nicht immer in jeder Gruppe Treffer, könnte auch mal sowas bei raus kommen:
1200921
378871
10923

Nun weiß ich nicht, welches die 2 leeren Gruppen sind...
 
Zuletzt bearbeitet:
G

Gast2

Gast
Dann gib doch die Gruppe mit aus:

Java:
String abfrage = SELECT neu.rank, COUNT(1) FROM tab1 as alt, tab2 as neu WHERE alt.KDNR = neu.KDNR AND alt.rank = 1 AND neu.rank < 6 GROUP BY neu.rank;

Das Problem ist wirklich das da schon viel wegoptimiert wird... Kannst mit Subselects oder UNION arbeiten wenn du eine feste Menge an Gruppen hast. - Dann halt für jeden Subselect gucken ob es eine Ergebniss hat sonst 0 setzen.
 

Jens81

Gesperrter Benutzer
So wie es ausschaut, werde ich mir die Gruppe mit ausgeben, die leeren / fehlenden Datensätze im Programm ergänzen und die Ergebnisse dann zur Verarbeitung weiterreichen. Scheint dann wohl die performanteste Lösung zu sein.

Hatte gehofft, dass es noch eine (einfache) Möglichkeit gibt, alles im SQL Statement zu lösen. Vielen Dank für eure Ratschläge!
 

Jens81

Gesperrter Benutzer
Eine ergänzende Frage habe ich allerdings noch:

Wenn man alt.rank nicht nur bei 1 belassen möchte, sondern diesen auch bis 5 hochzählt, ist das in einer Abfrage machbar? (= 25 Ergebnisse, wenn alle Gruppen vorhanden)

Gibts sowas wie eine Schleife? oder via Subquery?
 
S

SlaterB

Gast
ist mir bisher nicht begegnet, bin immer noch für Dummy-Tabelle,
dort ein Join, schon hast du 25 Elemente voreingestellt,
wobei ich das nur theoretisch so sehe,
4 joins teils verschiedener Arten, bestimmt ne Menge zu basteln falls es überhaupt geht
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
C Problem mit Apache Poi Datenbankprogrammierung 6
N HSQLDB Problem mit Eclipselink in runnable Jar Datenbankprogrammierung 10
P GroupLayout-Problem Datenbankprogrammierung 12
F XAMPP max connections problem Datenbankprogrammierung 6
C MySQL Problem in phpMyAdmin Oberfläche Datenbankprogrammierung 5
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
C Problem with insertion in database. Datenbankprogrammierung 7
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
G MySQL Problem mit MySQL verbindung Datenbankprogrammierung 8
A kleines Problem Datenbankprogrammierung 6
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
V Derby/JavaDB updateRow Problem Datenbankprogrammierung 0
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
Nuiton EmbeddedDriver Problem Datenbankprogrammierung 6
A MongoDB Passwort Problem Datenbankprogrammierung 0
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
F MySQL JDBC Problem Datenbankprogrammierung 5
Anfänger2011 Datenbankstruktur/aufbau (theoretisches Problem) Datenbankprogrammierung 5
M Derby/JavaDB Drop Database problem Datenbankprogrammierung 3
M Derby/JavaDB NOT LIKE problem Datenbankprogrammierung 19
N HSQLDB Problem mit EntityManager Datenbankprogrammierung 7
B MySQL JPAContainer Problem Datenbankprogrammierung 4
K Eclipse Apache Derby Treiber Problem Datenbankprogrammierung 4
C Problem oder Denkfehler mit H2-Database Datenbankprogrammierung 3
E Wie kann man das Problem mit der BLOB-Spalte lösen? Datenbankprogrammierung 1
M Problem mit jcouchdb und CouchDB - UTF8 kein gültiger Zeichentyp Datenbankprogrammierung 4
T MySQL Problem mit Datenbankanbindung Datenbankprogrammierung 4
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P SQL Query Problem Datenbankprogrammierung 14
A MySQL Problem bei Tabelle ausgeben Datenbankprogrammierung 3
Q MySQL JDBC-Treiber Problem Datenbankprogrammierung 2
B SQLite Problem bei Planung der Datenbank [Jeopardy] Datenbankprogrammierung 3
A Problem mit dem Import und Export von Bildern Datenbankprogrammierung 4
P Oracle Problem mit Umlauten Datenbankprogrammierung 9
A Problem mit Create-Statement Datenbankprogrammierung 9
D Problem mit COLUMN_IDENTIFIERS Datenbankprogrammierung 8
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
M Problem mit mehreren Datasourcen Datenbankprogrammierung 3
R Resultset.last() Problem Datenbankprogrammierung 12
M Problem GroupBy Datenbankprogrammierung 3
S CURRENT_DATE problem Datenbankprogrammierung 2
M Problem mt JPA Id-Generators Datenbankprogrammierung 18
Gossi Oracle Problem mit group by... Datenbankprogrammierung 22
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
R MS-SQL Express Login-Problem Datenbankprogrammierung 8
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
M Problem mit HQL Syntax Datenbankprogrammierung 5
K Db4o Delete Problem Datenbankprogrammierung 11
Mike90 Deadlock/Lock Problem Datenbankprogrammierung 4
T Access 32bit on Win7 64Bit ODBC Problem Datenbankprogrammierung 1
C unverständliches DB Problem (Es ist kein temporärer Systemtabellenbereich mit einer ausreichenden..) Datenbankprogrammierung 5
S ODBC Treiber Problem/oder unvermögen Datenbankprogrammierung 18
J Problem bei Boolean in PreparedStatement Datenbankprogrammierung 5
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
K Problem mit Datenbankverbindung via Eclipse Datenbankprogrammierung 2
A Problem mit Eintragen von Daten in eine Datenbank mittels DAO Datenbankprogrammierung 4
S Oracle Problem mit PreparedStatement.setString(1,"str") Datenbankprogrammierung 10
B MySQL Problem mit Datenbankanbindung an MySQL Datenbankprogrammierung 2
N Problem bei Erstellung eines Index Datenbankprogrammierung 12
C Hibernate Property-Problem Datenbankprogrammierung 5
J MyBatis - Update Problem Datenbankprogrammierung 4
S JPA: Problem mit Update von Daten Datenbankprogrammierung 7
c_sidi90 Hibernate Problem Table doesnt excist Datenbankprogrammierung 8
M Problem mit JPA - OneToMany-Relation Datenbankprogrammierung 3
I Hibernate: Composite Foreign Key Problem Datenbankprogrammierung 14
S JPA OptimisticLocking Problem Datenbankprogrammierung 11
I Derby/JavaDB Problem mit Befüllung von Tabelle Datenbankprogrammierung 7
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
I Problem mit ResultSet Datenbankprogrammierung 2
L Excel in MySQL importieren Problem Datenbankprogrammierung 5
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
R MS Access mit Java Problem mit Update Statment Datenbankprogrammierung 13
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
T Problem beim schreiben von daten Datenbankprogrammierung 4
M MySQL getConnection - Verbindung Problem Datenbankprogrammierung 2
K Hibernate + MySQL Problem... Datenbankprogrammierung 2
I MySQL MySQL – Proxy Problem Datenbankprogrammierung 4
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
M Problem mit Hibernate und Access Datenbankprogrammierung 9
C firebird problem Datenbankprogrammierung 5
F Problem mit Datenbankabfrage Datenbankprogrammierung 7
K SQL Problem mit Date Datenbankprogrammierung 3
jeppi MySQL Design-Problem: DB-Verbindung herstellen und halten - JdbcRowSet / Idle-Timeout? Datenbankprogrammierung 9
J sql abfrage ... Problem mit Datumswert Datenbankprogrammierung 3
G MySQL Connection Problem Datenbankprogrammierung 3
O MySQL Problem mit Umlauten?! Datenbankprogrammierung 2
E Hibernate Problem bei bidirektionaler 1:n Verbindung Datenbankprogrammierung 2
D MySQL Problem beim einfügen von Double-Zahlen Datenbankprogrammierung 4
M Oracle Problem mit Resultset Datenbankprogrammierung 11
T Problem bei Zugriff auf Access Datenbank Datenbankprogrammierung 7
W jpmdbc Problem -Beispiel funktioniert nicht Datenbankprogrammierung 9
W Verständnis-Problem JPA Grundlagen Datenbankprogrammierung 5
M Problem Array in BLOB-Feld in DerbyDB zu speichern Datenbankprogrammierung 5
M JPA-Persist Problem Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben