mysql: Select über zwei Tabellen

coyu

Grünschnabel
Hallo Leute,

folgende Tabellen:
Tabelle stammdaten: Kundennr | Name | Email
Tabelle zahldaten: Kundennr | Bezahlstatus
Primärschlüssel ist jeweils die Kundennr!

Ich möchte jetzt als Ergebnis eine Liste mit den Mailadressen von den Kunden haben, die bezahlt haben. Also wo Bezahlstatus = 'bezahlt' ist.

Aber ich kriege das nicht hin...

Wie sieht die SELECT-Anfrage dafür aus?

Vielen vielen Dank im voraus!

Coyu
 
Muesst so aussehen.

Code:
SELECT Email FROM stammdaten INNER JOIN zahldaten ON stammdaten.Kundennr = zahldaten.Kundennr WHERE Bezahlstatus = "bezahlt"
 
Die Kundennummer darf aber nur PrimaryKey in der Stammdatentabelle sein.
In der Tabelle Zahldaten sollte die Kundennummer Fremdschlüssel sein.
Wenn du Ihn brauchst solltest du für Zahldaten einen extra Primary anlegen.
 
Versuch's mal damit:
Code:
select Email from stammdaten, zahldaten where stammdaten.Kundennr=zahldaten.Kundennr and Bezahlstatus='bezahlt';
ist nicht getestet, müsste aber funktionieren.

redlama
 
Solltest das von redlama nehmen. Ich bin gerade im Unterricht und bemerkte das INNER JOIN wohl nicht in php funktioniert...
 
INNER JOIN Funktioniert glaub nur bei Access oder MS SQL Server, in MySQL ist das glaub entweder der EQUI JOIN oder nur JOIN.. schau am besten in die Doku von MySQL, da die Recht lang ist würde ich dort nach JOIN suchen..

Wenn in deiner Tabelle zahldaten die Kundennummer der Primärschlüssel ist, bedeutet dies das pro Kunde nur einmal Zahldaten vorhanden sein darf.
Wenn du für diese Tabelle keinen natürlichen Schlüssel findest benutze einen künstlichen Primärschlüssel mit einem Autowert.
Die Kundennummer ist dann der Fremdschlüssel, der die Beziehung zur Tabelle Stammdaten herstellt.
 
Bei dem von redlama solltest Du evtl. noch GROUP BY Kundennnr dranfügen, damit Du Einträge nicht doppelt bekommst, wenn ein Kunde schon mehrere Rechnungen beglichen hat, falls daas in Deiner Datenbank vorkommen kann. Es zeigt aber auch Kunden, die schon einmal bezahlt haben, ihre zweite Rechnung jedoch noch nicht.
 
hpvw hat gesagt.:
Bei dem von redlama solltest Du evtl. noch GROUP BY Kundennnr dranfügen, damit Du Einträge nicht doppelt bekommst, wenn ein Kunde schon mehrere Rechnungen beglichen hat, falls daas in Deiner Datenbank vorkommen kann. Es zeigt aber auch Kunden, die schon einmal bezahlt haben, ihre zweite Rechnung jedoch noch nicht.
Wäre aber da nicht eher ein DISTINCT anstelle des GROUP BY angebracht?`

redlama
 

Neue Beiträge

Zurück