Jeg har en side, hvor jeg præsenterer en sammensat vare, der består af nogle produkter - et sampak. Mit problem er hvordan jeg undgår at varen bliver vist på hjemmesiden, hvis blot én af de produkter, der indgår i varen er udsolgt. Jeg har følgende tabeller, hvor data kommer fra: SAMMENSATVARE(felter: NAVN og BESKRIVELSE af "pakken") SAMMENSATVARELINIE (felter:VARE_ID,ANTAL) VARELAGER:(hvor feltet DISPONIBELT hentes) Jeg vil gerne have lavet det sådan at hvis (SAMMENSATVARELINIE.ANTAL + 5 stk) < VARELAGER.DISPONIBELT skal hele varen fjernes fra siden. Er der nogen, der kan give et hint om hvordan forespørgslen skal se ud? (siden er lavet i Dreamweaver ASP "JAVASCRIPT")
Det skal måske lige tilføjes at de sammensatte varer vises i et repeat region, hvor kun SAMMENSATVARE.NAVN og SAMMENSATVARE.BESKRIVELSE vises med link til det detaljerede indhold via VARE_ID
SELECT SAMMENSATVARE.NAVN, SAMMENSATVARELINIE.ANTAL, VARELAGER.DISPONIBELT FROM SAMMENSATVARE,SAMMENSATVARELINIE,VARELAGER WHERE -> Her joiner du dine tabeller <- AND SAMMENSATVARELINIE.ANTAL + 5 < VARELAGER.DISPONIBELT;
sådan der vil jeg mene.. men du skal lige smide join delen på. Der mangler lidt info om hvad primary key og foreign key er i de forskellige så du joiner dem selv.
SELECT Varelager.disponibelt, Sammensatvare.navn, Sammensatvare.beskrivelse, Sammensatvarelinie.antal FROM Sammensatvare INNER JOIN (Varelager INNER JOIN Sammensatvarelinie ON Varelager.vareid = Sammensatvarelinie.vare_id) ON Sammensatvare.id = Sammensatvarelinie.sammensat_vare_id WHERE Sammensatvarelinie.antal +5 < Varelager.disponibelt;
Det er den samme som jeg selv har prøvet. Her fjernes kun de varer der ikke opfylder betingelsen, men PAKKENS øvrige varer vises stadig, hvorfor pakken stadig vil blive vist på siden....
ved ikke om man må det i SQL på dette punkt men mit bud ville være.
Sammensatvarelinie.sammensat_vare_id NOT IN ();
SELECT Varelager.disponibelt, Varelager.vareId as vareId, Sammensatvare.navn, Sammensatvare.beskrivelse, Sammensatvarelinie.antal FROM Sammensatvare INNER JOIN (Varelager INNER JOIN Sammensatvarelinie ON Varelager.vareid = Sammensatvarelinie.vare_id) ON Sammensatvare.id = Sammensatvarelinie.sammensat_vare_id WHERE Sammensatvarelinie.antal +5 < Varelager.disponibelt AND Sammensatvarelinie.sammensat_vare_id NOT IN (vareId) AND Sammensatvare.id NOT IN (vareId);
Strengen accepteres men stadig er det kun de linier der ikke opfylder kravet til antal+5<disponibelt, der bortfalder. Resten af varerne vises stadig - og dermed pakkerne. Kunne man tænke sig at man kunne sammenligne antallet af varelinier der er i pakkerne med det antal der opfylder minimumskravet - og hvis ikke disse er ens bortfalder pakken....
tror det er bedst en SQL ekspert udarbejder sql'en:)
og ellers kan du gøre det programmelt... dvs. før du udskriver på din ASP side tjekke om det der er ved at blive udskrevet ligger i en liste af id'er som gerne må udskrives.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.