Jeg skriver ang. en SELECT sætning, som jeg ikke kan greje hvordan skal se ud.
Sætningen er egentlig møntet på at blive anvendt i en SQL server database, men for overskuelighedens skyld, har jeg dannet problemstillingen i Access også (databasen kan downloades – jf. link i bunden).
Følgende tabeller eksisterer:
Varetabel (indeholder en liste over alle varer)
ID (primærnøgle, anvendes ikke)
Varenr (varenummer - type: Number)
Aktiv (1 = aktiv vare, 0 = ikke aktiv vare - type: Number)
VarerPrBilagTabel (indeholder tilvalgte varer på et bilag)
ID (primærnøgle, anvendes ikke)
Varenr (varenummer - type: Number)
Bilagsnr (Et bilagsnummer optræder flere gange med forskellige varenumre - type: Number)
Nedenstående regler skal gælde – illustreres i trin herunder:
1. Vise alle aktive varer fra Varetabel. Dette udføres naturligvis simpelt ved denne SELECT sætning:SELECT Varetabel.varenr, Varetabel.aktiv
FROM Varetabel
WHERE Varetabel.aktiv=1
2. Vise inaktive varer (dvs. varer hvor aktiv er sat til 0), men hvor varen er listet i tabellen VarerPrBilagTabel. Dette klares også let med en lille udbygning af SELECT sætning. Dog bliver det ikke til den endelige og dermed heller ikke den korrekte SELECT sætning:SELECT Varetabel.varenr, Varetabel.aktiv
FROM Varetabel LEFT JOIN VarerPrBilagTabel ON Varetabel.varenr = VarerPrBilagTabel.varenr
WHERE Varetabel.aktiv=1 OR (Varetabel.varenr=VarerPrBilagTabel.varenr)
3. Vise ovenstående for et specifikt bilagsnr. fra VarerPrBilagTabel (efter dette er SELECT sætningen færdig og korrekt).Her opstår problemet. Jeg kan ikke greje hvorledes jeg får puttet ind, at der kun skal kigges på varenumre i VarerPrBilagTabel hvor bilagsnr = f.eks. 10. Denne tabel indeholder jo ”mange” bilagsnumre, hvor de samme varenumre kan være listet flere gange for forskellige bilag.
For nemhedens skyld har jeg lagt denne forsimplede database op på følgende URL:
http://www.guldholdet.com/Varedatabase.mdbForespørgslen er også dannet i databasen (
VarerFinal)
Spørg løs, hvis I har spørgsmål.
På forhånd tak
Indlæg senest redigeret d. 05.01.2008 01:51 af Bruger #13050