03. juni 2003 - 22:44Der er
16 kommentarer og 1 løsning
Benytte visse varenumre som tilbehør på andre varenumre
Jeg bruger ASP og Access database. Jeg har i Access en kolonne som hedder Webstatus, hvis varenummeret er markeret med www i Webstatus kommer det på webben - ellers ikke. Jeg har oprettet nogle tilbehørskolonner Tilb1, Tilb2 osv. Her påfører jeg de varenumre som skal listes som tilbehør. Problemet er nu, at de varenumre som påføres i Tilb1, Tilb2 osv. går uden om mit Webstatus-check og kommer på webben uanset de er markeret som www eller ej. Er der mon nogen som kan kringle den ?
Så vidt jeg kan se bliver du nok nød til at splitte din tabel op i 2. En vare tabel (tblvare) og en tabel med de tilknyttede poster (tbltilknytning).
Derefter vil du kunne anvende følgende SQL-sætning:
SELECT tblvare.Varenr, tbltilknytning.tilknyttetvarenr, tblvare.www FROM tblvare INNER JOIN tbltilknytning ON tblvare.Varenr = tbltilknytning.Varenr WHERE tbltilknytning.tilknyttetvarenr In (SELECT varenr FROM tblvare WHERE www=true) AND tblvare.www=True AND tbltilknytning.Varenr=1;
Det centrale i den er at den laver en sub-query, der tjekker om www feltet for det tilknyttede varenr er = true.
I ovenstående eks. er der taget udgangspunkt i at du forespørger mod varenr 1.
En sidegevinst ved denne løsning er at du kan oprette et ubegrænset antal tilknyttede vare.
Min tabel hedder Produkter. Her er følgende kolonner: Varenr (primær nøgle), Webstatus, Tilb1, Tilb2 I Tilb1 og Tilb2 indtaster jeg nogle af posterne fra Varenr som tilbehør. Disse har det altså med at smutte udenom mit Webstatus=www check. Er det bedre at oprette en separat tilbehørstabel evt. med følgende kolonner: Varenr, Tilb1, Tilb2 osv. ? Jeg tester lige nogle af jeres forslag når jeg kommer hjem fra arbs i aften.
Undskyld mange gange. Jeg glemte helt at sige jeg gerne vil have den til at vise Varenavn på tilbehørsvarenumrene istedet for Varenr. Opsummering: 2 tabeller 1. Produkter Kolonner: Varenr (Primær nøgle) Varenavn Webstatus 2. Tilbehor Kolonner: Varenr Til1 Til2
Undskyld tænkepausen, jeg skulle pludselig på ferie :-) Jo, de varenumre jeg indtaster i Til1 og Til2 er også selvstændige produkter fra kolonnen Produkter.Varenr
Jeg har prøvet at oversætte følgende af "Luftballon's" tidligere svar til min database uden held: SELECT tblvare.Varenr, tbltilknytning.tilknyttetvarenr, tblvare.www FROM tblvare INNER JOIN tbltilknytning ON tblvare.Varenr = tbltilknytning.Varenr WHERE tbltilknytning.tilknyttetvarenr In (SELECT varenr FROM tblvare WHERE www=true) AND tblvare.www=True AND tbltilknytning.Varenr=1;
Blev til:
SELECT Produkter.Varenr, Tilbehor.Til1, Produkter.Webstatus FROM Produkter INNER JOIN Tilbehor ON Produkter.Varenr = Tilbehor.Varenr WHERE Tilbehor.Til1 In (SELECT Varenr FROM Produkter WHERE Webstatus=www) AND Produkter.Webstatus=True AND Tilbehor.Varenr='::Varenr::'
Jeg får følgende fejlbeskrivelse i på webben:
Database Results Error Description: [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. Number: -2147217904 (0x80040E10) Source: Microsoft OLE DB Provider for ODBC Drivers
Som sagt er mit mål at få listet Varenavn + Pris på de Varenr jeg indtaster i Til1 og Til2.
2. Tilbehor Kolonner: Varenr (sammensat nøgle) Til (sammensat nøgle)
I den forbindelse er det vigtigt at bemærke at det ikke er nødvendigt med felterne til1 og til2 i tilbehørstabellen, idet der skal oprettes en record for hver tilbehørsvare. Dvs hvis varenr 1 har varenr 2 og 3 som tilbehørsvarer, skal der oprettes 2 poster til tabellen tilbehor. Derfor er der kun ”vaernr” og ”til” i tabellen tilbehor.
Jeg har lavet en lille eksempeldatabase. Hvis du giver mig din email adr. så må du få den.
SELECT (SELECT varenavn FROM produkter WHERE varenr=til) AS Varenavn, (SELECT pris FROM produkter where varenr=til) AS Pris, (SELECT Varenr FROM produkter where varenr=til) AS Varenr FROM Produkter INNER JOIN Tilbehor ON Produkter.Varenr=Tilbehor.Varenr WHERE Tilbehor.Varenr='::Varenr::' AND (SELECT webstatus FROM produkter WHERE varenr=til)='www';
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.