MySQL: Mehrere zutreffende aus Relationstabelle ermitteln
Katrin Behrend
- datenbank
Hallo,
ich habe ein Problem mit der richtigen SQL Abfrage. Hier eine Beispieltabelle:
ID Name Auto
1 Müller Porsche
2 Müller VW
3 Müller BMW
4 Huber BMW
5 Huber VW
6 Schmitt Porsche
[..]
Nun brauche ich als Ergebnis z.B. "Alle Angestellten, die Porsche UND BMW fahren" (Müller).
Wie bekomme ich das hin?
Vielen Dank,
Katrin
Moin
Nun brauche ich als Ergebnis z.B. "Alle Angestellten, die Porsche UND BMW fahren" (Müller).
Eine einfache Verknüpfung hilft da.
WHERE Name='Müller' AND Auto='BMW'
Gruß Bobby
Hallo Bobby,
danke für Deine Antwort, aber sie hat leider nichts mit der Fragestellung zu tun. Ich möchte als Ergebnis ja "Müller" bekommen.
Danke, Katrin
Hallo Katrin,
danke für Deine Antwort, aber sie hat leider nichts mit der Fragestellung zu tun.
ja, doch sicherlich.
Ich möchte als Ergebnis ja "Müller" bekommen.
dann wähle in Deiner SELECT-Anweisung diese Spalte aus und schränke die Ergebnismenge durch die WHERE-Klausel (wie von Bobby bereits erwähnt) entsprechend ein.
Freundliche Grüße
Vinzenz
Hallo Ingrid,
Du schreibst Unsinn. Natürlich ergibt das eine leere Ergebnismenge :-)
danke für Deine Antwort, aber sie hat leider nichts mit der Fragestellung zu tun.
ja, doch sicherlich.
nein.
Ich möchte als Ergebnis ja "Müller" bekommen.
mein Artikel, Abschnitt Selfjoin, sollte Dir weiterhelfen.
Freundliche Grüße
Vinzenz
yo,
zum einen scheint dein datenbank-design nicht optimal zu sein. automarken und personen würde ich in verschiedene tabellen trennen und dann über fremdschlüssel miteinander verbinden. aber zurück zu deiner frage:
SELECT name
FROM tabelle
WHERE Auto IN ('Porsche', 'BMW')
GROUP BY name
HAVING COUNT(*) > 1
;
dabei wird vorausgesetzt, dass ein name nicht mehr als einmal das gleiche auto zugeordnet wird. sollte dies der fall sein, ist Vinzenz vorschlag über self joins zu bevorzugen oder unterabfragen.
Ilja