SQL-Abfragen: nach zwei Namen suchen
Habe eine Datenbank mit Einkäufen von Kunden. Aufgae 12. Martina Groß und Oliver Gross wohnen im gleichen Haus. Liste alle Waren auf, die sie gekauft haben. Für eine Person wär es ja
SELECT Warenbezeichnung, Kunde FROM einkauf WHERE Kunde= 'Martina Groß'
wie ist es wenn ich Oliver Groß auch haben möchte. Ich finde im Netzt nichts
Danke
2 Antworten
In MySQL ist das so:
SELECT Warenbezeichnung, Kunde FROM einkauf WHERE Kunde= 'Martina Groß' OR Kunde = 'Oliver Gross';
Das OR also logische "Oder" ist eine Verknüpfung, die eine zusätzliche Ergebnismenge liefert. Bei einer "AND"-Verknüpfung würde kein Ergebnis kommen, weil der Name nicht gleichzeitig beiden entsprechen kann.
OR im WHERE-Statement liefert immer genauso viele oder mehr Ergebnisse als eine einzelne Bedingung. AND liefert immer genauso viele oder weniger. je nachdem, wie die darauffolgende Bedingung aussieht.
Wenn Du die Datensätze dann unterscheiden oder besser zuordnen möchtest, musst Du zusätzlich den Kunden im Select-Statement auswählen.
Du kannst es entweder mit einem OR machen:
SELECT Warenbezeichnung, Kunde
FROM einkauf
WHERE Kunde = 'Martina Groß'
OR Kunde = 'Oliver Groß';
Alternativ ginge es auch mit IN:
SELECT Warenbezeichnung, Kunde
FROM einkauf
WHERE Kunde IN ('Martina Groß', 'Oliver Groß');
Wenn ich mir aber die Aufgabenstellung anschaue, steht da "wohnen im gleichen Haus". Evtl. kannst du über die Lieferadresse selektieren. Das ginge dann etwa so:
SELECT Warenbezeichnung, Kunde
FROM einkauf
WHERE Adresse = '...';
Allerdings erhältst du dann evtl. auch noch Bestellungen andere Hausbewohner.