G.O skrev:
> Jeg kan godt se ideen i det - men jeg kan altså ikke finde ud
> af syntaks og opbygning
Kan du lave et almindeligt join? Her er syntaksen som følger:
SELECT mitfelt
FROM tabel1 INNER JOIN tabel2
ON tabel1.joinfelt = tabel2.joinfelt
Man kan give tabellerne et alias - så ser det således ud:
SELECT mitfelt
FROM tabel1 t1 INNER JOIN tabel2 t2
ON t1.joinfelt = t2.joinfelt
Tricket i at sammenkæde en grupperet forespørgsel med en ikke-
grupperet er at putte den grupperede forespørgsel i parenteser og
give hele parantesen et alias. For databasen ser det ud som om
parantesen er en tabel i sig selv.
SELECT mitfelt
FROM tabel1 t1 INNER JOIN
( SELECT felt2, count(*) As Antal
FROM tabel1
GROUP BY felt2 ) AS t2
ON t1.felt2 = t2.felt2
Du skal så gøre det med to grupperede tabeller - men det er samme
gymnastik. Du skal blot lave et nyt join-udtryk efter det første:
SELECT mitfelt
FROM tabel1 t1 INNER JOIN
( SELECT felt2, count(*) As Antal
FROM tabel1
GROUP BY felt2 ) AS t2
ON t1.felt2 = t2.felt2
INNER JOIN
( SELECT felt3, count(*) As Antal
FROM tabel1
GROUP BY felt3 ) AS t3
ON t1.felt3 = t3.felt3
Når du skal udvælge felter fra tabellerne i en join-forespørgsel,
vil det ofte være nødvendigt at præfikse dem med tabelnavnet (eller
det tilhørende aliasnavn) - i eksemplet ovenfor kan jeg fx ikke
bruge navnet Antal direkte i den yderste SELECT. Det er jo ikke til
at vide om man så mener Antal fra den første group by-select eller
den anden. Hvis man vil have begge værdier ud kan man skrive
således:
SELECT mitfelt, t2.Antal AS t2Antal, t3.Antal AS t3Antal
FROM tabel1 t1 INNER JOIN
( SELECT felt2, count(*) As Antal
FROM tabel1
GROUP BY felt2 ) AS t2
ON t1.felt2 = t2.felt2
INNER JOIN
( SELECT felt3, count(*) As Antal
FROM tabel1
GROUP BY felt3 ) AS t3
ON t1.felt3 = t3.felt3
> Hvordan skal det se ud - kan jeg få lidt mere hjælp ?
Prøv at se om du kan overføre ovenstående til dine egne tabeller.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html