/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Hente data fra flere tabeller konditionelt
Fra : Peter Fløistrup Poul~


Dato : 19-04-06 15:18

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

 
 
Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408173
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste