Postar en fråga till då jag fick så snabbt svar på den förra Rent akademiskt så har det ingen beydelse i vilken ordning man anger joinarna när det gäller inner join. oops...att joinarnas ordning spelade roll lät så bekant att jag svarade utifrån den "vetskapen". Det kanske inte är så, och isåfall är jag ledsen...ska verifiera mitt svar bättre nästa gång. /Per Jag försöker identiferar tabellen som innehåller den lägsta nivån i urvalet. Utgå ifrån den med Left joins.inner join - sql 2000
Förstår inte varför man måste ta "joinsen" i denna ordning, jag vet att det inte fungerar annars men varför?
Tabeller + uppgiften finns här:
http://hem.bredband.net/delter/sql.jpg
Rätt svar:
Select firstname,lastname,groupname,companyname,rolename
from person inner join company
on company.companyid=person.companyid
inner join user_group on user_group.personid=person.personid
inner join userroles on userroles.roleid=user_group.roleid
inner join groups on groups.groupid=user_group.groupid
order by lastnameSv: inner join - sql 2000
Så att säga att SQL tolkas uppifrån och ner är inte korrekt. Det är databashanteraren som väljer hur och i vilken ordning de olika joinarna utförs.
Om databashanteraren kräver att inner join anges i en viss ordning så är det ett fel.Sv: inner join - sql 2000
Sv: inner join - sql 2000
<code>
SELECT firstname,lastname,groupname,companyname,rolename
FROM user_group LEFT JOIN
person ON user_group.personid = person.personid LEFT JOIN
company ON person.companyid = company.companyid LEFT JOIN
groups ON user_group.groupid = groups.groupid LEFT JOIN
userroles ON user_group.roleid = userroles.roleid
ORDER BY lastname
</code>