niggeMedlem sedan feb. 2002199 inlägg Hej, ursäkta den dåliga rubriken, jag kommer helt enkelt inte på någon som kortfattat kan förklara problemet. Hoppas någon känner att den orkar komma med någon idé.
Börjar med en liten bakgrund till problemet, ska göra en databas över en matvarukedja... och problemet jag har är när man ska räkna ut priser när det gäller multipriser(t.ex vid köp av 4 paket flingor så blir priset 20 kr).
Problemet jag har haft är att kilopriset blir fel när det är multipris... vilket är ganska logiskt då koden såg ut såhär...
(postar bara just den delen)
"WHERE(Pris.pris/storlek)<10
Där Pris.pris är värdet i pristabellen dvs typ 10.50
och storlek är storleken på förpackningen t.ex 5...
Så där var ju inte multipriset inblandat alls...
Har ändrat det till:
WHERE (Pris.pris/Forpackning.storlek)/Multipris.antal<10
Där multipris.antal är antalet som krävs för att multipriset ska bli giltigt.
Men nu får jag väldigt konstiga resultat...
T.ex om priset på förpackningen är 100 kr... och storleken på förpackningen är 1 kg...
då borde ju kilopriset bli 100kr... om man då sätter multipris på 5 st förpackningar för 100 kr... då borde ju kilopriset bli 100/5 = 20 kr/kg...
Men eftersom i min sats så vill jag att det bara ska visas om det är UNDER 10 kr... alltså ska den inte visas... vilket den gör... men om jag ändrar priset till 250 kr så försvinner den...
Förstår för allt i världen inte varför den försvinner först då... och inte tidigare...
Nu borde alltså ekvationen se ut såhär... Pris.pris= 250/Forpackning.storlek = 1/Multipris.antal= 5 <10
och DÄR stämmer den, men så fort jag väljer pris=249 så dyker den upp igen.
Tacksam för all hjälp!
(Om det behövs/underlättar så här är min email/msn adress: nigge_e@yahoo.se)
(Bör även tillägga att jag har provat att flytta runt parenteserna runt ekvationen så det BÖR inte vara det... men risken finns ju trots allt)
BrimbaMedlem sedan dec. 19995 875 inlägg Hur ser värdena ut om du gör.
SELECT Pris.pris, Forpackning.storlek, Multipris.antal FROM ...
Då borde du ganska snabbt se vad som är fel.
niggeMedlem sedan feb. 2002199 inlägg Trodde jag lyckades lösa den nu, men det verkar som att den "blandar" ihop alla multipris.antal med varandra, inte just med det som är kopplat till den produkten jag är ute efter...
biffogar hela sql koden... ber om ursäkt om den är väldigt rörig men hoppas den hjälper.
SELECT DISTINCT Butik.namn, Pris.pris,Forpackning.storlek, Multipris.antal, ( SELECT Multipris.antal FROM Multipris WHERE Multipris.prisid = Pris.prisid) AS Antalommultipris
FROM Butik, Butikspris, Pris, Produkt, Forpackning, Forpackningspris, Inventering, Markesprodukt, Multipris
WHERE (Pris.pris/Forpackning.storlek)/multipris.antal<10 And Produkt.namn='Spaghetti' And Produkt.Produktid=Markesprodukt.ProduktID And Markesprodukt.markesproduktsID=Forpackning.MarkesproduktsID And Forpackning.streckkod=Forpackningspris.streckkod And Forpackningspris.prisid=Pris.prisid And Forpackning.streckkod=Inventering.streckkod And Inventering.butiksid=Butik.butiksid And Butikspris.Butiksid=Butik.butiksid And Butikspris.prisid=Pris.prisid;
Kan även lägga till att om jag lägger till en "AND Multipris.prisid=pris.prisid" i slutet av koden då fungerar multipris.priserna rätt, men då visas inte dom andra priserna som INTE är multipriser...
BrimbaMedlem sedan dec. 19995 875 inlägg Måste du ha alla dessa joins? Vad händer om du endast försöker hämta data från de tabeller du verkligen behöver för att på det sättet utesluta felkällor.
niggeMedlem sedan feb. 2002199 inlägg Det är mycket möjligt att vissa av joinsen är onödiga, jag har försökt kolla igenom dem, men känns som alla behövs för att få fram samtliga vilkor som krävs...(Det ska visas vilken butik som har varan i fråga), och då måste det ju först bestämmas vilken vara, vilken butik som lagerför varan, vilken tidpunkt priset gällde osv...
TROR jag har kommit fram till vad problemet är nu iaf... det är att den kombinerar vilken multiprisantal som helst med det aktuella multipriserbjudandet, den verkar kombinera ihop ett multiprisantal med vilket prisid som helst...
Som jag skrev tidigare... testade att lägga till en
AND Pris.Prisid=multipris.prisid men då ställdes ju krav att det var ett multipris... vilket inte är meningen...
niggeMedlem sedan feb. 2002199 inlägg Tänkte bygga vidare/försöka förtydliga lite vad jag menar ifall det är några oklarheter
Tänk på att ett pris som inte är multipris har antal 1.
Eftersom det bara är multipriserna som har antal som det är idag så borde ju alla andra priser sättas som antal 1...
Går det att genom en select-sats att åstadkomma detta?
Stort tack för hjälpen återigen!
/N
:bire En bägare till den som lyckas;)