![]() |
Datenbank: mysql • Version: 5 • Zugriff über: zeos
Komplizierte SELECT Abfrage...
Hi,
Ich habe folgende 2 Tabellen: 1: parents id (int), name (varchar) , gender (int), .... 2: children id (int), parent_id (int), name(varchar), gender (int), ... Jetzt wollte ich eine SELECT Abfrage machen, deren Resultat inetwa so aussehen sollte: parents.id, parents.name.... wo nur "parents" die ein "child" haben da sind und die noch dazu noch männlich sind... gender = 1 = männlich
SQL-Code:
select * from parents where gender = 1 and ???
|
Re: Komplizierte SELECT Abfrage...
Grob aus dem Kopf:
SQL-Code:
SELECT p.id, p.name FROM parents p
LEFT JOIN children c ON c.parent_id = p.id WHERE p.gender = 1 GROUP BY p.parent_id |
Re: Komplizierte SELECT Abfrage...
Zitat:
Um alle Eltern zu bekommen mit mindestens einem Kind, ist die Formulierung von Matze nicht ganz korrekt... Er hat auf die falsche Seite gejoined.
SQL-Code:
SELECT p.parent_id, p.name, count(c.child_id) as BubCount FROM parents p
RIGHT OUTER JOIN children c ON c.parent_id = p.parent_id WHERE p.gender = 1 GROUP BY p.parent_id, p.name |
Re: Komplizierte SELECT Abfrage...
Zitat:
|
Re: Komplizierte SELECT Abfrage...
Die ganze Joinerei mach ich jedesmal falsch. :mrgreen: Daher auch "grob". *g*
|
Re: Komplizierte SELECT Abfrage...
Zitat:
@sniper: Du müsstest ja dann jetzt eine Lösung haben... Funktioniert sie? |
Re: Komplizierte SELECT Abfrage...
Ja es funktioniert...ich teste es immernoch, aber es schient zu funktionieren.
Vielen Dank. |
Re: Komplizierte SELECT Abfrage...
Das müsste aber doch auch mit einem INNER JOIN gehen, oder irre ich mich?
SQL-Code:
SELECT p.id, p.name, COUNT(*)
FROM parents p JOIN children c ON c.parent_id = p.id WHERE c.gender = 1 GROUP BY p.id, p.name |
Re: Komplizierte SELECT Abfrage...
Ich brauche eigentlich
SQL-Code:
aber dein Vorschlag funktioniert auch!
WHERE [b]p[/b].gender = 1
PS: Warum werden beide Felder "gegroupt"
SQL-Code:
Sollte es eigentlich nicht nur ein ausreichen.
GROUP BY p.id, p.name
|
Re: Komplizierte SELECT Abfrage...
Wenn Du Aggregatfunktionen benutzt (hier COUNT), müssen alle Nicht-Aggregatfelder in die Gruppierung.
|
Re: Komplizierte SELECT Abfrage...
U. U. kann man Felder auch in Aggegate umwandeln
|
Re: Komplizierte SELECT Abfrage...
Zitat:
Inner Join sollte auf jeden Fall bevorzugt werden, aus Performance Gründen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz