SQL Query Problem

Paul279

Aktives Mitglied
Hallo Community

hier mal meine zwei Tabellen mit Beispielwerten:

Tanz:
ID, Altersklasse, IstGestartet
1 , Jung , false
2 , Jung , true
3 , Alt , false
4 , Alt , false
5 , Jung , true

Altersklasse:
Altersklasse_name, eindeutigeNummer
Jung , 1
Alt , 2

Ich möchte nun erreichen, dass ich eine Ausgabe bekomme, die mir alle Altersklassen anzeigt mit der Anzahl der gestarteten Tänze. Also ich möchte gerne so etwas:
Ausgabe:
Jung, 2 (weil bei IstGestartet true ist und es zwei davon gibt)
Alt, 0 (weil kein Tanz gestartet ist wo ein Tanz mit der Altersklasse "Alt" durchgekommen ist)

Hier mal meine Query:
SQL:
select altersklasse_name, count(*) as anzahl  from tanz inner join altersklasse on tanz.Altersklasse= altersklasse.altersklasse_name where gestartet_runde1=true group by altersklasse_name

Das Problem ist nur, dass er mir nur
"Jung, 2"
zurück gibt, weil eben bei keinem Tanz mit der Altersklasse "Alt" jemand gestartet ist.

Ich möchte aber gern alle Altersklassen bekommen, auch wenn es 0 sind.

Die Ausgabe wäre fast richtig wenn man die selbe SQL Query ohne where schreiben würde, dann hätte man alle Altersklassen, nur würden dann nicht nur alle gestarteten sondern auch alle nicht gestarteten Tänze zurückgegeben werden, was ich aber nicht möchte.

Könnte mir jemand bitte aus dieser Miesere heraus helfen
Danke sehr
 

Paul279

Aktives Mitglied
Leider kann ich meinen Beitrag nicht mehr editieren:

Ich habe es versucht mit der selben Query nur mit right join. Mein Verständnis sagt dann müsste eigentlich das raus kommen:
Jung , 1
Alt , null

Weil das right join besagt ja, dass er alles aus der Tabelle Altersklasse nehmen soll. Nur warum tut er das aber nicht?
 

Joose

Top Contributor
Hier mal meine Query:
SQL:
select altersklasse_name, count(*) as anzahl  from tanz inner join altersklasse on tanz.Altersklasse= altersklasse.altersklasse_name where gestartet_runde1=true group by altersklasse_name

Das Problem ist nur, dass er mir nur
"Jung, 2"
zurück gibt, weil eben bei keinem Tanz mit der Altersklasse "Alt" jemand gestartet ist.

Ich möchte aber gern alle Altersklassen bekommen, auch wenn es 0 sind.

Ich glaube dieser Link sollte dir weiterhelfen können. :)
 

Paul279

Aktives Mitglied
Leider nein

Wenn ich schreibe:
SQL:
SELECT altersklasse_name, count(*) AS anzahl  FROM tanz INNER JOIN altersklasse ON tanz.Altersklasse= altersklasse.altersklasse_name GROUP BY altersklasse_name

Würde er mir alle Altersklassennamen auflisten mit der Anzahl gefundener Rows. Also Ausgabe:
Alt, 2
Jung, 3

Doch jetzt habe ich alle Rows, doch möchte ich nur alle haben die ein true bei "IstGestartet" haben.

Schreibe ich das where hinzu:
SQL:
SELECT altersklasse_name, count(*) AS anzahl  FROM tanz INNER JOIN altersklasse ON tanz.Altersklasse= altersklasse.altersklasse_name where IstGestartet=true GROUP BY altersklasse_name
hätte ich eine perfekte SQL Query, wenn es den Sonderfall nicht geben würde, dass eine Altersklasse überhaupt keinen True wert hat bei IstGestartet. Hat eine Altersklasse nämlich keinen True wert, wird diese Altersklasse gar nicht angezeigt.

Jetzt habe ich es mit einem "right join" versucht, da mein Verständnis mir gesagt hat, dass bei einem Right join auf die Tabelle Altersklasse alle Werte von der Tabelle Altersklasse angezeigt werden, auch wenn es keinen Eintrag in der Tabelle Tanz zu dieser Altersklasse gibt.

Doch das funktioniert auch nicht. Er gibt mir die Altersklasse Alt nicht mit null aus.
 

Thallius

Top Contributor
DAs müßte mit einem GROUP CONCAT gehen. Wozu du jetzt den JOIN hast verstehe ich allerdings nicht. Du hast doch in der ersten Tabelle schon alles Informationen die Du brauchst. Die zweite Tabelle wird doch gar nicht benötigt?

Gruß

Claus
 

Paul279

Aktives Mitglied
Group_concat hab ich noch nie verwendet, gerade mal gegoogelt, leider verstehe ich nicht ganz wie mir das helfen sollte?

Du hast Recht, ich brauche den Join nicht. Der ist in meinem Gedanken eines Right join entstanden.

SQL:
select group_concat(altersklasse), count(*) from tanz where istgestartet=true group by altersklasse

Er gibt mir leider noch immer nicht die Altersklasse "Alt" aus.
 

Thallius

Top Contributor
Also der where filtert natürlich alle Daten raus wo isgestartet false ist. Das kann so nicht gehen.

Kannst du nicht einfach nach isgestartet und Alter gruppieren?

Gruss

Claus
 

JaVasIssenDas

Neues Mitglied
Hallo Paul279,

eine einfache Lösung wäre, auf die boolschen Ausdrücke in der Tabelle zu verzichten und statt dessen ein Integer-Feld zu benutzen.
gestartet = 1
nicht gestartet = 0

Die simple Abfrage mit der Summenfunktion über istgestartet und der Gruppierung der Altersgruppe gibt nun alle Altersgruppen und die Summe der gestarteten Tänze zurück.

Abfrage:
SELECT Altersklasse.Altersklasse, Sum(Altersklasse.istgestartet) AS Summevonistgestartet
FROM Altersklasse
GROUP BY Altersklasse.Altersklasse;

Tabellenstruktur:
ID=Autowert
Altersklasse=text
istgestartet=Integer

DBMS: ACCES 2003 ( okay, okay...., sollte aber so oder ähnlich in allen Ansi-Komformen SQL-DBMS mit Domain-Funktionen (Sum, Max, Min etc.) funktionieren z.B. Mysql u.ä.

Ob es so z.b. in HSQL, SQLite o.ä. funktioniert, hab ich jetzt noch nicht ausprobiert.

Grüße
JaVasIsDennDas
 

Paul279

Aktives Mitglied
Danke an alle für eure Hilfe,
JaVasIssenDas hat mich auf den Tipp gebracht:

So funktionierts und auch ohne den Datentyp auf Integer zu ändern:
Code:
select alt, sum(case when gestartet_runde1 = true then 1 else 0 end) from tanz group by alt
 

Paul279

Aktives Mitglied
Tut mir leid, nehme alles zurück, so funktioniert es einmal nicht, denn wenn ich ein where dazu setzte und es eingrenze, bekomme ich wieder nicht alle Altersklassen zurück
 

Paul279

Aktives Mitglied
Leider kann ich den vorigen Beitrag nicht mehr editieren:
So funktionierts jetzt aber!
Code:
select altersklasse_name, COALESCE((select sum(case when gestartet_runde2 = true then 1 else 0 end) 
       from tanz where runde=2 and tanz.alt = altersklasse.altersklasse_name), 0) as anzahl 
       from altersklasse group by altersklasse_name order by altersklasse_name
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
M Problem mit Hibernate und Named Query Datenbankprogrammierung 1
Zrebna PostgreSQL-Query in eine MicrosoftSQL-Query konvertieren - chatGPT hilft nur bedingt. Datenbankprogrammierung 3
L JPA EclipseLink PostgreSQL auslesen mit Query Datenbankprogrammierung 2
T TRIM in Query Datenbankprogrammierung 3
D sql query in methode mit rückgabetyp Datenbankprogrammierung 14
OnDemand Mysql Query Builder Datenbankprogrammierung 1
P Herausfinden wann Query null zurück gibt? Datenbankprogrammierung 1
OnDemand SQL Query Optimierung Datenbankprogrammierung 28
Kirby.exe Verwirrung beim Query Datenbankprogrammierung 4
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Oracle Query umbauen (sind die Querys gleich?) Datenbankprogrammierung 5
B Frage bei einer SQL Query Datenbankprogrammierung 3
C Fehlerhafte SQL Query Datenbankprogrammierung 4
B MySQL Query (Anfängerfrage :D) Datenbankprogrammierung 3
B JPA / HQL Support bei Query - Distanzberechnung Datenbankprogrammierung 0
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
Thallius MySQL Was ist falsch an dem Query? Datenbankprogrammierung 2
Thallius MySQL Wo ist der Fehler in dem Query? Datenbankprogrammierung 2
OnDemand MySQL SQL Query Datenbankprogrammierung 2
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
S sql query, um bestimten datensatz zu finden Datenbankprogrammierung 33
OnDemand SQL Query Anzahl der Werte Datenbankprogrammierung 8
H MySQL Anderer Query-Ansatz? Datenbankprogrammierung 4
P Tricky SQL Query Datenbankprogrammierung 3
I Nullpointer bei einfacher Daba query Datenbankprogrammierung 12
I Query für Geburtstage Datenbankprogrammierung 6
S MYSQL: "Packet for query is too large" Datenbankprogrammierung 0
S HSQLDB PrepareStatement- Falsche query Datenbankprogrammierung 2
F Oracle The parameter name [...] in the query's selection criteria does not match any parameter name d Datenbankprogrammierung 2
J Fehler bei mySQL Query Datenbankprogrammierung 19
R MySQL berechnete Spalte im selben query weiterverwenden? Datenbankprogrammierung 4
S MySQL Hochkommata in Query Datenbankprogrammierung 7
D SQL Update auf eine Query möglich? Datenbankprogrammierung 4
T HQL Query funktioniert nicht? Datenbankprogrammierung 8
M PostgreSQL Hibernate Query Restriction Datenbankprogrammierung 2
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
algebraiker Eclipse RCP - no persistent classes found for query class Datenbankprogrammierung 4
M List aus Hibernate Query Datenbankprogrammierung 5
M JPA-Query - nicht das komplette Objekt Datenbankprogrammierung 4
S DB2 Eclipselink Query Datenbankprogrammierung 2
LadyMilka Ergebnistyp HQL-Query Datenbankprogrammierung 3
M Frage zu folgender Query in EJB-QL Datenbankprogrammierung 4
Eldorado MySQL HQL Query Tag von Date Datenbankprogrammierung 6
H DB auslesen (Hibernate, Query, Parameter) Datenbankprogrammierung 8
C Split String für SQl query Datenbankprogrammierung 10
C setSelectedValue in SQL Query übergeben Datenbankprogrammierung 20
D Hibernate: Query verarbeiten Datenbankprogrammierung 11
B Hibernate, einfaches Query Ausgeben Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
L Query grafisch erzeugen Datenbankprogrammierung 6
N SQL Query Browser Error Datenbankprogrammierung 6
B Suche Query um genau einen Wert einer def. Gruppe aus einer Tabelle zu erhalten. Datenbankprogrammierung 2
Chtonian Effizientes Query System für Wortnachschlagewerk Datenbankprogrammierung 9
D Hibernate, Criteria Query Datenbankprogrammierung 2
T JPQL Query für eine Tabellenansicht Datenbankprogrammierung 2
G JPQL L*KE / JPA Query Language Datenbankprogrammierung 9
O SQL-Query bringt Fehler Datenbankprogrammierung 4
D kurze Frage zu einem Query Datenbankprogrammierung 6
S Query aus Querys Datenbankprogrammierung 14
P [Hibernate] Criterion-Query in HQL übersetzen Datenbankprogrammierung 10
D Neuer Query wird nicht erkannt Datenbankprogrammierung 10
E Wie koennte die SQL Query aussehen? Datenbankprogrammierung 13
B mysql query ausführen Datenbankprogrammierung 4
N Fehler beim matchen von Strings via Query Datenbankprogrammierung 2
G How to put SQL query result into a file Datenbankprogrammierung 3
B Ein Query mit Mysql erzeugen Datenbankprogrammierung 6
G Hilfe bei Query für Spaltenansicht. Datenbankprogrammierung 20
A Fehler bei query Datenbankprogrammierung 7
G SQL-Query Methode Datenbankprogrammierung 4
N Problem mit dem Datenbankzugriff über ucanaccess Datenbankprogrammierung 15
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

Ähnliche Java Themen

Neue Themen


Oben