I mitt exempel hade jag bara två tabeller som jag länkade ihop. Om vi kanske hade haft 7 eller 8 tabeller så hade det blivit väldigt krångligt att skriva utan joins.
Dessutom finns funktionerna "left" och "right" join som ex. kan plocka ut ALLA poster från den "vänstra" tabellen vare sig de stämmer överens med "where" satsen eller inte MEN bara de poster från den "högra" som stämmer med "where"-satsen.
RIGHT har jag inte hittat något om men LEFT var just det jag letade efter. Den funktionen finns inte i en SELECT-sats!
Nu en till fråga om JOIN. Jag har en användatdatabas och en artikeldatabas. Artikeldatabasen har två referenser till användaradatabasen. En skapare och en ändrare.
Användardatabasen (users): ID, Name
Artikeldatabas (arts): ID, CreateUserID, ModUserID
Jag kan använda följande SQL-sats för att få fram namnen på skaparna:
SELECT * FROM arts INNER JOIN users ON CreateUserID = users.ID
Hur gör jag nu för att ta ut båda namnen på samma gång?
Hur gör jag nu för att ta ut båda namnen på samma gång?
Både CreateUserID och ModUserID pekar till en användare. Jag vet hur jag kan få ut en användare i taget(jag visade hur jag kunde få ut CreateUserID) men inte båda samtidigt.
SELECT a1.id,u1.username AS createuser,u2.username AS moduser FROM arts a1, users u1, users u2 WHERE a1.createuserid=u1.userid AND a1.moduserid=u2.userid
Aliasing är svaret på din bön. :)
Det går självklart också att skriva med INNER JOIN