Avatar billede mini-me Nybegynder
04. november 2008 - 12:08 Der er 4 kommentarer og
1 løsning

Hjælp med SQL forespørgsel

Hej,

Jeg er løbet hovedet mod muren og har brug for hjælp til at lave denne sql sætning.

Sætningen skal bruges til at indsnævre emner af produkter i tabellen inventory.

Min inventory tabel består af:

Item | Grouping | Price

Som indeholder alle produkter

Så har jeg inventoryParameter

Som består af

Item | Parameter | ParamNo


Item i inventoryParameter peger op på item i inventory.

Eksempel på lidt data i de 2 tabeller:


Item    | Grouping | Price
Puma        Sko        599
Adidas      Sko        499
Ecco        Sko        200
Gstar      Støvle    100
Clarks      Sandaler  300


Item | Parameter | ParamNo
Puma  Rød          0
Puma  Grøn        0
Puma  Sort        0
Puma  Small        1
Puma  Medium      1
Puma  XL          1
Adidas  Large      1
Adidas  Hvid        0
Adidas  Sort        0
Ecco    Sort        0
Ecco    small      1
Ecco    Medium      1
Ecco    Brun        0 
Clarks  Hvid        0
Clarks  Sort        0
Clarks  Large      1
Clarks  Medium      1   


Jeg ved ikke om det kan løses med en eller om der skal flere sætninger til.

Jeg skal nu så via 3 forskellie inputs:

Mulighed for at vælge Grouping, Størrelse(paramNo=1), farve(paramNo=0)

Have mulighed for at få et output som består af eks.:

Jeg vælger at størrelse skal være small

så skal jeg have alle items fra inventory hvor parameter er small

Vælger jeg at det sakl være small og farve brun

så skal jeg have alle items fra inventory hvor parameter er small og farven er brun

Vælger jeg at jeg skal have fra gruppen gstar og farve rød og størrelse small

så skal jeg have alle items fra inventory hvor paramater er small, farven er brun og grouping er gstar
Avatar billede hrc Mester
04. november 2008 - 15:03 #1
Hvorfra skal du køre dette script? Er det fra en SQL-prompt eller fra et .NET program eller hvad? Det er ret vigtigt.

Skal scriptet kunne bruges til alle situationer?

Håber ikke du bruger tekststrenge som nøgler i dine tabeller. Lav en primærnøgle af typen integer som du refererer til (med andre ord: Håber det er et hjemmeeksperiment og ikke noget et firma skal betale for).

Det må være noget lignende dette der skal bruges:

select i.item, i.price, ip.parameter, ip.paramno
  from inventory i
  join inventoryparameter ip on (ip.item = i.item)
  where (ip.parameter in (@1) or @1 is null)
    and (i.item = @2 or @2 is null)

Parameteren @1 er en streng med et sæt af de parametre du ønsker at fiske efter, eksempelvis '"small","Brun"' (ved ikke om strenge kan bruges i sæt; tror det faktisk ikke). Hvis @1 er null vil den i realiteten være inaktiv.
Avatar billede mini-me Nybegynder
04. november 2008 - 15:10 #2
Hej,

jeg har ingen indflydelse på hvordan tabellerne er bygget.

Jeg skal bruge det i forbindelse med et website.
Avatar billede mini-me Nybegynder
04. november 2008 - 15:11 #3
Jeg får ikke parametrene i sæt, det er kun en enkelt parameter der kan vælges.
Avatar billede mini-me Nybegynder
04. november 2008 - 15:12 #4
Men hvor er grouping i den sql sætning?
Avatar billede mini-me Nybegynder
04. november 2008 - 22:51 #5
sBrand = Request.QueryString("Brand")
        sSize = Request.QueryString("Size")
        sColor = request.QueryString("Color")
       
        if sBrand <> "" then
            pSQL = pSQL & "AND inventory.Grouping='"& sBrand & "'"
        end if
       
        if sSize <> "" then
            pSQL = pSQL & "AND testSize.Parameter ='"& sSize & "'"
        end if
       
        if sColor <> "" then
            pSQL = pSQL & "AND testColor.Parameter ='"& sColor & "'"
        end if
       
        strSQL = "SELECT distinct dbo.Inventory.Item, inventory.Guid, dbo.Inventory.PriceIncl FROM dbo.Inventory INNER JOIN dbo.InventoryParameter TestSize ON dbo.Inventory.Item = TestSize.Item INNER JOIN dbo.InventoryParameter TestColor ON dbo.Inventory.Item = TestColor.Item WHERE (TestSize.ParamNo = '0') AND (TestColor.ParamNo = '1') AND (dbo.Inventory.WebUseOnWeb = '1') " & pSQL
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester