CREATE TABLE Species (
SpeciesID smallint NOT NULL,
Name varchar(60) NOT NULL,
PRIMARY KEY (SpeciesID)
);
CREATE TABLE Table2 (
Blahablaha int NOT NULL,
SpeciesID smallint NOT NULL,
blabla int NOT NULL,
PRIMARY KEY (Blahablaha),
FOREIGN KEY (SpeciesID) REFERENCES Species
);
CREATE TABLE Results (
ResultsID int NOT NULL,
Blahablaha int NOT NULL,
Something int NOT NULL,
PRIMARY KEY (ResultsID),
FOREIGN KEY (Blahablaha) REFERENCES Table2
);
Hur ska innerjoinsatsen se ut? Om jag kör med detta:
SELECT *
FROM Table2
INNER JOIN Results ON Results.Blahablaha= Table2.Blahablaha
INNER JOIN Species ON Species.SpeciesID = Table2.SpeciesID
Tja, den frågan kommer returnera alla kolumner från alla rader i Table2 för vilka det finns en matchande rad i Results för vilka det i sin tur finns matchande rader i Species. Det måste alltså bli "träffar" i hela kedjan för att du ska få något resultat. Är det det du är ute efter?
Jo precis - det är det jag är ute efter... Men det funkar inte!
Det jag vill få ut är värden från både table2- och results-tabellerna (det är ju bara att ändra * till vilka värden jag vill få ut).. De resultaten jag vill få ut är resultat som finns länkat från "Table2" o sen i sin tur "Species".. Det ovanstående funkar nästan felfritt- jag får dubletter bara i vissa fall! Så innerjoinsatsen bör ju vara fel tycker jag...