11. februar 2002 - 13:22Der er
12 kommentarer og 3 løsninger
Avanceret SQL
Jeg skal have lavet en SQl sætning der indeholder en udregning. Jeg har en tabel (periode) der bl.a indeholder et felt der hedder UGE og et felt der hedder PRIS. Det drejer sig om biludlejning. Hvis en bruger fx indtaster at han vil leje en bil fra Uge 1, og så 2 uger frem til en given pris, så skal sætningen finde det ID hvor fx Prisen for Uge1 + Uge2 < Den pris han indtastede. Ved godt det er dårligt formuleret :)
Altså hvis jeg forstår dig rigtig så har en en tabel som indeholder prisen for en given uge(uge1,uge2 .. osv.) - hvor der pr. uge kan være forskellige priser. Men ????
Men det ville være nemmere at stykke en SQL-streng sammen hvis man vidste noget om dit tabel-design. Hvad er databasem lavet i Access???
Synes godt om
Slettet bruger
11. februar 2002 - 14:06#5
>Sonne, kan man? Jeg tester lige. Det skal jo være 2 poster der skal lægges sammen. ´Men du har nok ret, tester lige.....
Synes godt om
Slettet bruger
11. februar 2002 - 14:13#6
Ehm, nej tror ikke lige den er god nok. Her er min kode (den funger) for hvis brugeren kun skulle leje bilen i 1 uge.
SQL = "SELECT Car_Id FROM Periode WHERE (Week = "& Uge & ") and (Price_Euro <= "& MAXPRIS &")"
Uge er her = 1, Det den skal gøre er at ligge Prisen for Uge(1) sammen med Prisen for Uge(2) og så checke om det er mindre en MAXPRIS. Fatter det ikke, hvis i kan finde ud af det, må i MEGET gerne skrive hvordan sætningen så skulle se ud.
Dette skulle virke: SQL = "SELECT Car_Id FROM Periode WHERE (SELECT SUM(Price_Euro) FROM Periode a WHERE (a.Week >= " & Uge1 & ") AND (a.Week <= " & Uge2 & ") AND a.Car_Id = Periode.Car_ID) < " & MAXPRIS
Du har nu et recordset med de poster, der opfylder betingelserne.
Synes godt om
Slettet bruger
12. februar 2002 - 16:02#11
Nope. Den laver lort i det. Er du sikker på at det er den præcise kode, har aldrig selv brugt ";" tegnet i vbscript. Æv hvor er det irriterende :(((((((((
Synes godt om
Slettet bruger
12. februar 2002 - 16:06#12
Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'Car_Id' as part of an aggregate function. /travel(ny)/test.asp, line 37
Som jeg forstår så vil du have et udtræk af de biler der kan udlejes for en bestemt pris eller derunder i en eller fler uger. ?
Så har du brug for en SQL-sætning der ser sådan ud. SQL = "SELECT Car_Id, Sum(Price_Euro) as SumPris FROM Periode WHERE (Week >= "& Uge1 & ") and (Week <= "& Uge2 & ") and (SumPris <= "& MAXPRIS &") group by car_id"
MEN - ovennævnte sætning kan ikke lade sig gøre. ! derfor er du nødt til at lave et udtræk med alle biler i de uger det drejer sig om og så gennemløbe recordsættet og sortere dem fra der overstiger MAXPRIS.
SQL = "SELECT Car_Id, Sum(Price_Euro) as SumPris FROM Periode WHERE (Week >= "& Uge1 & ") and (Week <= "& Uge2 & ") group by car_id"
do while not RS.EOF if (RS("SumPris") <= MAXPRIS then ' Den er go' nok end if RS.MoveNext loop
Synes godt om
Slettet bruger
12. februar 2002 - 16:28#15
Ok, tror det virker nu, checker lige
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.