ich zwei Tabellen haben, wie folgt:Wie bekommen die Verknüpfungen direkt in einer SQL-Abfrage
Menschen:
First_Name Last_Name
Bill Smith
David Williams
Fred Jones
Freda Jones
Jane Smith
John Smith
Peter Williams
Sally Williams
Haustiere:
Species Title Owner
Dog Fido Jones
Cat Tibs Jones
Dog Jock Williams
Ich weiß, es ist ein seltsames Datenbankdesign, aber bitte sagen Sie mir nicht, die Datenbank neu zu gestalten. Es ist ein Beispiel, das das eigentliche Problem darstellt, das komplizierter ist und nicht neu gestaltet werden kann.
Ich versuche, eine Abfrage zu formulieren, die genau eine Zeile für jede Person zurück, und eine Spalte mit dem Titel ihrer Katze enthält, oder null, wenn sie nicht eine Katze besitzen (I verwendet Title
weil Name
ein reserviertes Wort ist und Zugang beschwert).
Die nächst ich komme mit habe, ist:
SELECT People.*, Pets.Title
FROM People
LEFT JOIN Pets ON People.Last_Name = Pets.Owner
WHERE Pets.Species IS NULL OR Pets.Species = "Cat"
Doch diese Liste keine Zeilen für die Familie Williams, weil sie einen Hund besitzen.
Ich habe dies als MS Access getaggt, weil ich tatsächlich Access 97 verwende (nicht fragen!), Aber, anders als Access 's eher begrenzte Join-Einrichtungen, sollte es eine allgemeine SQL-Frage sein.
Sie ein Problem, wenn (im vollständigen Schema) haben, können Sie nur einen Nachnamen haben (Teilschlüssel) Identifizieren Sie den Besitzer der Katze. Du könntest Menschen haben, die in verschiedenen Häusern leben, beide mit dem Nachnamen Williams. Gemäß Ihrem Schema sind alle ihre Haustiere in gemeinschaftlichem Besitz. – mwigdahl