Hej,
Database: MSSQL2000
Tabel: Items
----------------------
* ItemId (int - primærnøgle)
* Title (nvarchar)
* Price (decimal)
Tabel: Prices
----------------------
* PriceId (int - primærnøgle)
* ItemId (int)
* Quantity (int)
Tabel: Carts
----------------------
* CartId (int - primærnøgle)
* Guid (nvarchar)
* ItemId (int)
* Quantity (int)
Jeg har nogle varer i tabellen Items. En sådan har altid en "1 stk.'s
pris", som er defineret ved kolonnen Items.Price
En vare kan også have flere priser (mængderabat), som angives som poster
i tabellen Prices, med et varenr (ItemId), antal (Quantity) og stk. pris
for pågældende antal (Price)
Sidst men ikke mindst har jeg så min tabel Carts, som agerer indkøbskurv.
Nu er jeg så i gang med at lave en Stored Procedure, som kan hente en
indkøbskurv ud og vise den korrekte stk. pris for hver vare.
Altså skal den hvis der i indkøbskurven kun er antal = 1, hente prisen
direkte fra Items tabellen. Er antal > 1 skal der tjekkes om der en
passende forekomst i Prices tabellen, så der kan returneres en aktuel
enhedspris.
Jeg er forleden blev hjulpet godt i gang, men desværre ikke helt nok:
BEGIN
SELECT Items.ItemId, Items.Vat, Items.SymbolicName, Title, Quantity,
Guid, ISNULL(afterrebate,Price) AS UnitPrice
FROM (Carts INNER JOIN Items ON Carts.itemid=Items.itemid
AND Carts.Guid = @Guid AND Carts.ShopId = @ShopId)
LEFT JOIN (SELECT Prices.itemid,MIN(Price) AS afterrebate
FROM Prices INNER JOIN Carts ON Prices.itemid = Carts.itemid
WHERE
Prices.quantity<=Carts.quantity
GROUP BY Prices.itemid) x ON Carts.itemid=x.itemid
END
Såfremt antallet er lig 1 synes det ikke rigtigt at føre til noget.
Nogen der har et indspark som kan hjælpe mig videre? Jeg er virkelig ved
at køre fast.
På forhånd tak.
--
Med venlig hilsen
Peter F. Poulsen
|