Avatar billede sysmatic Nybegynder
08. november 2006 - 10:53 Der er 4 kommentarer og
1 løsning

Hjælp til svært SQL udtræk

Hej Eksperter..

Nu har jeg siddet og kløet mig selv i nakken i 3 dage over dette problem. Jeg sidder og laver et bestillings modul til en catering virksomhed, det er også meget fint og det virker ok, MEN - En ting er at oprette bestillinger, en helt anden er at trække dataen ud så kokkene kan se hvad de skal lave..

Til det har jeg lavet en side som finder alle ordre i MSSQL databasen på en pågældende dag og printer dem ud. Link til siden: http://www.ebmmusic.dk/catering/printstatus.html

Hver ordre indeholder en eller flere produkter, og hver produkt indeholder flere tilvalgs muligheder.

[Ordre]
  [Produkt 1] MenuID = 1 | Ananasring, Svinekam, Is
    [Tilvalg 1] MenuID = 1, TID = 1 | Ananasring
    [Tilvalg 3] MenuID = 1, TID = 3 | Svinekam
    [Tilvalg 5] MenuID = 1, TID = 5 | Is

  [Produkt 2] MenuID = 1 | 2 tarteletter, Svinekam, Is
    [Tilvalg 2] MenuID = 1, TID = 2 | 2 tarteletter
    [Tilvalg 3] MenuID = 1, TID = 3 | Svinekam
    [Tilvalg 5] MenuID = 1, TID = 5 | Is

  [Produkt 3] MenuID = 2 | Kold kogt laks, Svinemørbrad omsvøbt i bacon, Flødebagte kartofler
    [Tilvalg 6] MenuID = 2, TID = 6 | Kold kogt laks
    [Tilvalg 7] MenuID = 2, TID = 7 | Svinemørbrad omsvøbt i bacon
    [Tilvalg 8] MenuID = 2, TID = 8 | Flødebagte kartofler

Mit problem er at jeg skal vide hvor mange produkter der indeholder TID 1,3,5 og hvor mange produkter der indeholder TID 2,3,5 osv.

Problemet ligger også i at Produkt 1 og Produkt 2 er den samme menu men de kan indeholde flere forskellige ting, alt efter hvad kunden ønsker.

Jeg kan bare ikk finde ud af det!
Håber i kan hjælpe mig!
Avatar billede sysmatic Nybegynder
08. november 2006 - 11:02 #1
-- Tabel Oversigt --
[tb_Order_Kunder]
- OrderID (Følge ID til ordren)
- tr_LevDate (Leveringsdato)

[tb_Order_Produkter]
- OrderID
- KPID (Unikt ID som identificere produktet)
- MenuID
- fn_ProduktAntal (Antal der skal levere af dette produkt)

[tb_Order_Tilvalg]
- OrderID
- KPID
- MenuID
- TID
Avatar billede mitbrugernavn Praktikant
08. november 2006 - 11:02 #2
forstår jeg rigtig så er MenuID hovedmenu nr. og TID er tilvalgs nr.

strSQL = "Select distinc MenuID,TID from din tabel order by MenuID"

'så har du en af hver - herefter kan du så hente hvor mange
strSQL = "Select * from din tabel where MenuID = "&rs("MenuID ")&" and TID = "&rs("TID")& order by MenuID"
Avatar billede sysmatic Nybegynder
08. november 2006 - 12:47 #3
Tak for dit hurtige svar..

Det du skriver ovenfor havde jeg desværre allerede fundet ud af. Ellers tak.

Hvis man ser på: http://www.ebmmusic.dk/catering/printstatus.html kan vi se at ’Festmenu’ er på 1721stk. Men der kan være flere undergrupper under hvert menupunkt.
F.eks.:
Gruppe1 har MenuID = 18 og TID = 1,3 og 5
Gruppe2 har MenuID = 18 og TID = 1,4 og 5
Gruppe3 har MenuID = 18 og TID = 2,3 og 5
Gruppe4 har MenuID = 18 og TID = 2,4 og 5

Dvs. at hvis jeg henter MenuID 18 i [tb_Order_Tilvalg] og der findes mere end en af disse grupper så skal MenuID’et opdeles i x antal grupper.

I bund&grund skal der så i stedet for
1721x Festmenu
Stå
217x TID 1,3,5
517x TID 1,4,5
327x TID 2,3,5
778x TID 2,4,5

Her er min nuværende kode:
<%
xDateSQL = "tb_Order_Kunder.tr_LevDate = '"&Request.Querystring("rq1")&"'"

SQL01 = "SELECT MainID, fn_MenuNavn FROM tb_Menuer"
Set rs01 = Conn.Execute (SQL01)
Do While Not rs01.eof
xAntal = 0
  SQL02 = "SELECT tb_Order_Kunder.OrderID, tb_Order_Produkter.fn_ProduktAntal, tb_Order_Produkter.MenuID FROM tb_Order_Kunder INNER JOIN tb_Order_Produkter ON tb_Order_Kunder.OrderID=tb_Order_Produkter.OrderID WHERE "&xDateSQL&" And Not MenuID = "&GLOB_ABGID&" And Not MenuID = "&GLOB_RENID&" And MenuID = "&rs01("MainID")&""
  Set rs02 = Conn.Execute (SQL02)
  Do While Not rs02.eof
    xAntal = xAntal + rs02("fn_ProduktAntal")
  rs02.MoveNext
  Loop
  If Not xAntal = 0 Then
    Response.Write xAntal & "stk.&nbsp;" & rs01("fn_MenuNavn") &"<br>"
    SQL03 = "SELECT tb_Order_Produkter.fn_ProduktAntal FROM tb_Order_Produkter INNER JOIN tb_Order_Kunder ON tb_Order_Produkter.OrderID = tb_Order_Kunder.OrderID Where "&xDateSQL&" And MenuID = "&rs01("MainID")&" Group by fn_ProduktAntal"
    Set rs03 = Conn.Execute (SQL03)
    Do While Not rs03.eof
      SQL04 = "SELECT Count(fn_ProduktAntal) As xCount FROM tb_Order_Produkter INNER JOIN tb_Order_Kunder ON tb_Order_Produkter.OrderID = tb_Order_Kunder.OrderID Where "&xDateSQL&" And MenuID = "&rs01("MainID")&" And fn_ProduktAntal = "&rs03("fn_ProduktAntal")&""
        Set rs04 = Conn.Execute (SQL04)
        Response.Write rs04("xCount")&"x"&rs03("fn_ProduktAntal")&" "
    rs03.MoveNext
    Loop
    Response.Write "<hr size=""1"" width=""100%"" noshade color=""#666666"">"
  End If
rs01.MoveNext
Loop
%>
Avatar billede sysmatic Nybegynder
08. november 2006 - 12:49 #4
Jeg kan desværre ikke lægge databasen op da den ligger i MSSQL, men jeg kan lægge billeder op af hver tabel så i kan få en fornemmelse for hvad det er!
Avatar billede sysmatic Nybegynder
20. november 2006 - 09:59 #5
Lukker
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
Kurser inden for grundlæggende programmering

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