06. april 2006 - 08:47Der er
4 kommentarer og 1 løsning
Hjælp til sqlsætning
Jeg har følgende tabeller:
--ProduktData-- *produktid aktiv
--Beskrivelse-- *produktid *specid vaerdie
--Ordrelinie-- *ordrelinieid ordreid produktId Antal
Forklaring: Et produkt består af x antal beskrivelse (disse er dynamiske), hver type beskrivelse kaldes en specifikation (Den tabel er ikke med her) og der kan kun være en af hver specifikation pr produkt (specid referere til en specifikation).
Jeg har så tabellen ordrelinier som referere til nogle bestilte produkter. Det jeg skal have lavet er en ordreseddel som for hver ordrelinie skal vise antal bestilte enheder (ordrelinie.antal), produktets navn (beskrivelse.specid = 286) og produktets pris (beskrivelse.specid = 293) for et bestemt ordreid.
Jeg har prøvet at lave noget ala det her:
SELECT DISTINCT antal AS Quantity, (SELECT TOP 1 vaerdie FROM Beskrivelse WHERE specId = 286) AS navn, (SELECT TOP 1 vaerdie FROM Beskrivelse WHERE specId = 293) AS belob FROM beskrivelse INNER JOIN shop_ordrelinier ON beskrivelse.produktId = shop_ordrelinier.produktId WHERE (shop_ordrelinier.ordreId = @ordrenr)
Noget i denne stil, hvis jeg har forstået det korrekt.
SELECT ordrelinie.antal, prodBesk.vaerdi AS navn, prodPris.vaerdi AS pris FROM ordrelinie JOIN beskrivelse AS prodBesk ON ordrelinie.ordreid = @ordrenr AND ordrelinie.produktId=prodBesk.produktId AND prodBesk.specid=286
JOIN beskrivelse AS prodPris ON ordrelinie.produktId=prodPris.produktId AND prodPris.specid=293
Da jeg læste dit spørgsmål, kom jeg til at tænke på, om du i forbindelse med ordrelinierne er opmærksom på, at du ikke får rettet i gamle ordrer ved opdatering af produktbeskrivelser og priser.
Med ordrer er det oftest rigtigt at hardcode varetekst m.m. da det er vigtigt at man et halvt år senere kan se hvad der præcist blev bestilt. Det samme vil du naturligvis gøre med priser.
Så når en vare bestilles, så henter man Varetekst, Pris m.m. fra diverse tabeller, og gemmer dem i shop_ordrelinier.
Du skal naturligvis alligevel gemme produktId'et i shop_ordrelinier.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.