Leif Neland
unread,Jan 10, 2013, 6:51:07 AM1/10/13You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Jeg skal hente det mest solgte produkt i en kategori, eller hvis ingen
solgte, bare et tilfᅵldigt
SELECT top 1 prodkat.prodid,navn,sum(antal)
FROM prodkat -- produkt i kategori-tabel
INNER JOIN produkter
ON produkter.prodid=prodkat.prodid -- stamdata for produkt
LEFT JOIN ordrelinier -- join nr 2
ON produkter.prodid=ordrelinier.prodid -- find produktet pᅵ ordre
INNER JOIN ordrer --join nr 3
ON ordrelinier.ordrenr=ordrer.ordrenr
AND ordredato>DATEADD(YEAR,-1,GETDATE())
WHERE prodkat.katid=@kat -- parameter
GROUP BY prodkat.prodid,navn
ORDER BY sum(antal) desc
Har jeg ikke "join nr 3" med, dvs joinet med ordrer, fᅵr jeg, hvis der
ingen varer er solgt den i kategori, en row, hvor sum(antal) er null
Laver jeg "join nr 2" INNER, fᅵr jeg ingen rows, det er klart.
Men jeg vil kun se pᅵ varer solgt det sidste ᅵr, sᅵ jeg joiner (join nr
3) med ordrer.
Men laver jeg et INNER JOIN, fᅵr jeg ingen rows, hvis ingen ordrer.
Laver jeg et LEFT JOIN, fᅵr jeg ogsᅵ talt ordrelinier med, hvor ordren
er for gammel.
Hvad kan jeg sᅵ gᅵre?
--
Husk kᅵrelys bagpᅵ, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.