SQL: GROUP BY og LEFT JOIN

Tags:    mssql

Hej alle sammen,

Jeg har arbejdet ca. 1 år med webprogrammering og kommer derfor ind imellem til også at lave sql.

Nåh men til sagen:
Jeg er MEGET usikker på hvordan jeg skal bruge LEFT JOIN, når der er tale om JOIN mellem flere tabeller end bare to. Altså hvordan er syntaksen og hvilke overvejselser skal jeg gøre.

Group by, bliver den KUN brugt i forbindelse med Agg funktioner og opføre den sig forskellig i Mysql og Ms sql ?


Jeg fik af en ven lavet sqL:


SELECT kategori1.kategori1navn,COUNT(annoncer.annonceid) AS antal
FROM (kategori1 LEFT JOIN kategori2 ON kategori1.kat1id=kategori2.fkkat1id)
LEFT JOIN annoncer ON kategori2.kat2id=annoncer.fkkat2id
GROUP BY kategori1.kategori1navn


Denne sql Virker fint i Mysql, men den fejler i MS SQL. MS sql forlanger vist alle de felter som står i SELECT skal også skrives i GROUP By.....

-......
Som i kan se, at LEJT JOIN mellem 3 tabeller er defineret sådan:

FROM (kategori1 LEFT JOIN kategori2 ON kategori1.kat1id=kategori2.fkkat1id)
LEFT JOIN annoncer ON kategori2.kat2id=annoncer.fkkat2id


Og Det virker, men hvis jeg skulle lave det så ville det have set sådan ud:

FROM
kategori1 LEFT JOIN kategori2 ON kategori1.kat1id=kategori2.fkkat1id
AND
kategori2 LEFT JOIN annoncer ON kategori2.kat2id=annoncer.fkkat2id


Hvorfor virker min måde at gøre på ikke ?

......



t