20. maj 2003 - 20:59Der er
11 kommentarer og 1 løsning
Joine 3 tabeller med een sql sætning i asp
HEJ! Jeg har 3 tabeller kundeinfo, booking & gruppebooking. Fra booking skal jeg bruge felterne: bookingNr ordreNr kundeID tblRest tblPris
Fra gruppebooking skal jeg bruge: bookingNr tblArrangor lejlID
kundeinfo indeholder: kundeID tblOrdrer (som er en kommasepareret liste med booking Numre)
Det jeg skal bruge er et recordset der samler alle poster fra gruppebooking hvori et bookingNr fra tblOrdrer indgår og alle de poster fra booking hvor de poster der har et bookingNr hvor et nummer fra tblOrdrer indgår OG hvor kundeID lig med en session variabel - session("kundeID").
Hvis bookingNr er ens i både gruppeBooking og booking skal de to poster slåes sammen.
Lidt kryptiskt, men håber I kan hjælpe og gerne hurtigt!!
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
Det skal siges, at jeg har forsøgt med både: strSQL = "SELECT DISTINCT booking.OrdreNr, booking.bookingNr, booking.kundeID, booking.tblRest, booking.tblPris, booking.tblDep, gruppebooking.bookingNr as bookingNr2, gruppebooking.lejlID, gruppeBooking.prisID FROM booking RIGHT JOIN gruppebooking ON gruppebooking.bookingNr=booking.bookingNr WHERE gruppebooking.bookingNr in(" & rsKunde("tblOrdrer") & ") ORDER BY booking.bookingNr" - hvor jeg har tblOrdrer fra et andet recordset. Det gav næsten det rigtige resultat. Jeg de rigtige poster fra gruppebooking, posterne fra booking indeholdt også poster med et andet kundeID (fordi der godt kan eksistere flere poster i booking med samme bookingNr)
OG MED: strSQL = "SELECT booking.OrdreNr, booking.bookingNr, booking.kundeID, booking.tblRest, booking.tblPris, booking.tblDep, gruppebooking.bookingNr as bookingNr2, gruppebooking.lejlID, gruppeBooking.prisID FROM booking RIGHT JOIN gruppebooking ON gruppebooking.bookingNr=booking.bookingNr WHERE gruppebooking.bookingNr in(" & rsKunde("tblOrdrer") & ") AND booking.kundeID = 33 ORDER BY booking.bookingNr"
- hvor jeg kun får de poster gra gruppebooking der har en tilsvarende post i booking med kundeID = 33
nej, det er mig der vrøvler - det må du undskylde. session("kundeID") hjælper med at finde brugeren i tabellen kundeinfo. Fra kundeinfo bruges tblOrdrer til at finde poster i gruppebooking og booking. I nogle tilfælde er der både en post med samme bookingNr i booking og gruppebooking - hvis det sker skal de to poster slåes sammen. MEN de skal kun slåes sammen hvis kundeID i booking er lige session("kundeID"). Dvs. at alle poster fra gruppebooking med et bookingNr der findes i tblOrdrer skal bruges, mens det kun er de poster fra booking der har et bookingNr der findes i tblOrdrer og et kundeID lig session("kundeID") der skal bruges. Jeg ved ikke om det gjorde det lettere at forstå?
Oasen: Jeg får denne fejlmeddelelse: Der opstod en Microsoft VBScript-kompileringsfejl (0x800A03FD) 'Case' var ventet
tblOrdrer i kundeinfo kan godt indeholde flere bookingNr - men aldrig to af det samme. De er kommasepareret dvs. at tblOrdrer for en kunde f.eks. kunne være "10000071, 10000074".
Kommaseparerede? Så skal du bruge IN-operatoren, men den er desværre meget krævende at anvende. Jeg mener helt klart, at du bør lave en seperat tabel til tblOrdrer's. Det andet er ikke god tabelstruktur...
Hm, det er faktisk lidt pinligt - havde kaget temmelig meget rundt i koden. Mht. til tblOrdrer har jeg lavet en ny tabel kaldet Ordrer og lavet 3 felter i den. kundeID, tblOrdrer og ID(autonummerering). Nu er der kun en post pr. bookingNr, dvs. at tabellen Ordrer ser sådan ud:
kundeID BookingNr ID 33 10000074 1 33 10000078 2
Jeg har ændret i sql'en og har skiftet kundeinfo ud med Ordrer, da det nu er denne tabel der holder styr på kundens tidligere ordrer, her er hele mit dokument
<%@LANGUAGE="VBSCRIPT" %> <!-- #include file="conn.asp" --> <% conn.open dsn strSQL = "Select booking.OrdreNr, booking.bookingNr, booking.kundeID, booking.tblRest, booking.tblPris, gruppebooking.bookingNr, gruppebooking.lejlID, gruppeBooking.tblArrangor, ordrer.tblOrdrer From (Ordrer Inner Join gruppebooking On ordrer.tblOrdrer = gruppebooking.bookingNr) Inner Join booking On ordrer.tblOrdrer = booking.bookingNr And KundeID = " & Session("brugerID") & " Group By booking.OrdreNr, booking.bookingNr, booking.kundeID, booking.tblRest, booking.tblPris, gruppebooking.bookingNr, gruppebooking.lejlID, gruppeBooking.tblArrangor, Ordrer.tblOrdrer" set rsTest = conn.execute(strSQL)
conn.close set conn = nothing %>
Nu får jeg denne fejl: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access-driver] Joinudtrykket understøttes ikke. /sx/bruger_ordrestatus_oversigt.asp, line 6
Jeg får stadig denne fejl: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access-driver] Joinudtrykket understøttes ikke. /sx/bruger_ordrestatus_oversigt.asp, line 6
Nu er det så den her jeg får: Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1. /sx/bruger_ordrestatus_oversigt.asp, line 6
nå, så lukker jeg spørgsmålet, men du skal have tak fordi du prøvede! ;)
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.