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 ?
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
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.