Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2008

Hjälp med SQL

Behöver än en gång hjälp med SQL. Läser en första kurs i databasmetodologi och har gjort en databas i MS Access, en databas för en Livsmedelsbutikskedja.

Jag vill visa hur många Kg spaghetti som finns i varje butik. Och även visa dom butiker som inte har någon spaghetti alls i resultatet. I min databas har jag endast 5 butiker där två av dom har spaghetti i sitt sortiment. Det en finns en tabell med information om butikerna som heter "butik", det finns en tabell "butikssortimentsrad", som innehåller information om vilka samt antalet produktförpackningar som finns i en viss butik, och sen även en tabell "produktförpackningar" som innehåller information om en viss produkt och dess storlek, t ex Spaghetti, 500g, artikelnummer 658-90. Det är dessa tre tabeller som är intressanta i denna fråga.

Jag misstänker att jag behöver använda en LEFT JOIN för att få med dom butiker som inte har spaghetti i sortimentet, men har inte fått det att funka. Med den här SQL-satsen får jag endast fram de två butiker som har spaghetti och hur många kilo sammanlagt:

SELECT Butik.butiknamn, Produktförpackning.storlek * Butikssortimentsrad.butikantal AS antal_Kg FROM Produktförpackning, Butik, Butikssortimentsrad WHERE Butikssortimentsrad.produktförpackning=Produktförpackning.artikelnummer AND Butik.butiksnummer=Butikssortimentsrad.butik AND Produktförpackning.produkttyp="Spaghetti"

Vad kan jag göra för att få med alla butiker men visa "0" för dom som inte har spaghetti?

Tack!
/Snorkelfarsan

EDIT: Jag löste problemet, delade upp det i två SQL-satser. Den första är som den jag klistrade in ovan, och den andra är själva joinen som använder sig av den första(kallad "Ref9"):

SELECT Butik.butiknamn, Ref9.Antal_Kg FROM Ref9 RIGHT JOIN Butik ON Butik.butiknamn=Ref9.butiknamn ORDER BY Butik.butiknamn;

Kommentarer på min lösning?

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Maj 2007

select b.butiknamn, (p.storlek * br.butikantal) as antal_Kg from butik as b left outer join Butikssortimentrad as br on br.butik=b.butiksnummer left outer join Produktförpackning as p on p.artikelnummer=br.produktförpackning where p.produkttyp='Spaghetti'

Möjligtvis.