MySQL-Abfrage
David
- php
0 Vinzenz Mai0 David0 Vinzenz Mai0 David
Ich würde gerne mit MySQL aus jedem Ort die älteste Frau anzeigen wollen, kriege es aber irgendwie nicht hin:
location age sex
Ort1 28 m
Ort2 28 w
Ort2 33 w
Ort1 22 w
Ort1 83 w
Ort1 82 w
Ort2 56 w
Dann sollte rauskommen:
Ort1 83 w
Ort2 56 w
select * from tabelle where sex='w' group by location having max(age)
funktioniert leider nicht :(
Danke für Hilfe!
Hallo,
Ich würde gerne mit MySQL aus jedem Ort die älteste Frau anzeigen wollen, kriege es aber irgendwie nicht hin:
location age sex
Ort1 28 m
Ort2 28 w
Ort2 33 w
Ort1 22 w
Ort1 83 w
Ort1 82 w
Ort2 56 wDann sollte rauskommen:
Ort1 83 w
Ort2 56 w
Du benötigst eine korrelierte Unterabfrage.
Freundliche Grüße
Vinzenz
Du benötigst eine korrelierte Unterabfrage.
Was soll denn die "Unterbedingung" sein?
Hallo David,
Du benötigst eine korrelierte Unterabfrage.
Was soll denn die "Unterbedingung" sein?
möchtest Du nicht die älteste Person von jedem Ort haben?
Freundliche Grüße
Vinzenz
möchtest Du nicht die älteste Person von jedem Ort haben?
Doch, die älteste WEIBLICHE Person aus jedem Ort. Ich verstehe nicht, weshalb meine Lösung nicht funktioniert.
Hallo,
möchtest Du nicht die älteste Person von jedem Ort haben?
Doch, die älteste WEIBLICHE Person aus jedem Ort. Ich verstehe nicht, weshalb meine Lösung nicht funktioniert.
weil sie syntaktischer Mist ist. Jedes andere Datenbankmanagementsystem, das mir bekannt ist, wird eine Fehlermeldung ausspucken, aber kein Ergebnis liefern. Ja, ich finde das gut. Nein, ich finde das dokumentierte Verhalten von MySQL ziemlich dämlich. Es verwirrt Einsteiger wie Dich.
Wenn Du keinen Namen benötigst, dann benötigst Du kein Subselect:
SELECT -- Gib mir
location, -- den Ort
MAX(age), -- den höchsten Alterswert
sex -- und das Geschlecht
FROM -- aus
tabelle -- meiner Tabelle
WHERE -- wobei nur
sex = 'w' -- Frauen berücksichtigt werden sollen
GROUP BY -- gruppiert
location, -- nach Ort
sex -- und Geschlecht
Möchtest Du jedoch die älteste Person unabhängig vom Geschlecht haben, dann geht das nicht mehr, wie Du dem von mir verlinkten Archivposting entnehmen kannst. Möchtest Du noch weitere Informationen wie zum Beispiel den Namen der Person oder die Anschrift ermitteln, dann geht das auch *nicht* mehr. In diesen Fällen benötigst Du eine korrelierte Unterabfrage.
Freundliche Grüße
Vinzenz