Avatar billede tblaster Nybegynder
01. marts 2003 - 13:54 Der er 15 kommentarer og
1 løsning

SQL - DISTINCT + UNION

Hvad er der lige galt her?

SQL = "SELECT DISTINCT Lokaler.Id, Lokaler.lokale, Booking.bookid as bId, Booking.lokalenr, Booking.Dato, Booking.initialer, Booking.firma, Booking.tid, Booking.kommentar, Booking.samletpris, Booking.sagsnr, Booking.antal, Booking.tlf, Booking.foldevæg, Booking.projektør, Booking.KaffeThe, Booking.kaffekande, Booking.tekande, Booking.rundstykker, Booking.ost, Booking.eftermiddagskage, Booking.småkager, Booking.frugt, Booking.isvandkande, Booking.opdækning_uden_dug, Booking.opdækning_med_dug, Booking.buffet, Booking.buffetantal, Booking.bordopstilling FROM booking INNER JOIN Lokaler ON Booking.lokalenr = Lokaler.id WHERE Booking.bookid = " & Request.querystring("id") & " ORDER BY Booking.bookid UNION SELECT Lokaler.Id, Lokaler.lokale, Booking.bookid as bId, Booking.lokalenr, Booking.Dato, Booking.initialer, Booking.firma, Booking.tid, Booking.kommentar, Booking.samletpris, Booking.sagsnr, Booking.antal, Booking.tlf, Booking.foldevæg, Booking.projektør, Booking.KaffeThe, Booking.kaffekande, Booking.tekande, Booking.rundstykker, Booking.ost, Booking.eftermiddagskage, Booking.småkager, Booking.frugt, Booking.isvandkande, Booking.opdækning_uden_dug, Booking.opdækning_med_dug, Booking.buffet, Booking.buffetantal, Booking.bordopstilling FROM booking"

Den melder følgende:
ADODB.Recordset error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Avatar billede tblaster Nybegynder
01. marts 2003 - 14:02 #1
Ups ... det er denne fejl den kommer med :-) Sorry

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.
Avatar billede mortrr Praktikant
01. marts 2003 - 14:54 #2
Det er næsten helt sikkert et feltnavn du har stavet forkert.

- Morten
Avatar billede tblaster Nybegynder
01. marts 2003 - 14:59 #3
jeg har kopieret de øverste ned efter min union så det tror jeg ikke det er!
Avatar billede tblaster Nybegynder
01. marts 2003 - 15:08 #4
Nu har jeg prøvet igen og så opdateret min sql med min en min og max tid og har nu følgende:

SQL = "SELECT Lokaler.Id, Lokaler.lokale, Booking.lokalenr, Booking.Dato, Booking.initialer, Booking.firma, MIN(booking.tid) as minTid, MAX(booking.tid) as maxTid, Booking.kommentar, Booking.samletpris, Booking.sagsnr, Booking.antal, Booking.tlf, Booking.foldevæg, Booking.projektør, Booking.KaffeThe, Booking.kaffekande, Booking.tekande, Booking.kaffekandeantal, Booking.tekandeantal, Booking.rundstykker, Booking.ost, Booking.eftermiddagskage, Booking.småkager, Booking.frugt, Booking.isvandkande, Booking.opdækning_uden_dug, Booking.opdækning_med_dug, Booking.buffet, Booking.buffetantal, Booking.bordopstilling FROM booking INNER JOIN Lokaler ON Booking.lokalenr = Lokaler.id WHERE Booking.bookid = " & Request.querystring("id") & " GROUP BY Lokaler.Id, Lokaler.lokale, Booking.lokalenr, Booking.Dato, Booking.initialer, Booking.firma, Booking.kommentar, Booking.samletpris, Booking.sagsnr, Booking.antal, Booking.tlf, Booking.foldevæg, Booking.projektør, Booking.KaffeThe, Booking.kaffekande, Booking.tekande, Booking.kaffekandeantal, Booking.tekandeantal, Booking.rundstykker, Booking.ost, Booking.eftermiddagskage, Booking.småkager, Booking.frugt, Booking.isvandkande, Booking.opdækning_uden_dug, Booking.opdækning_med_dug, Booking.buffet, Booking.buffetantal, Booking.bordopstilling UNION SELECT Lokaler.Id, Lokaler.lokale, Booking.lokalenr, Booking.Dato, Booking.initialer, Booking.firma, MIN(booking.tid) as minTid, MAX(booking.tid) as maxTid, Booking.kommentar, Booking.samletpris, Booking.sagsnr, Booking.antal, Booking.tlf, Booking.foldevæg, Booking.projektør, Booking.KaffeThe, Booking.kaffekande, Booking.tekande, Booking.kaffekandeantal, Booking.tekandeantal, Booking.rundstykker, Booking.ost, Booking.eftermiddagskage, Booking.småkager, Booking.frugt, Booking.isvandkande, Booking.opdækning_uden_dug, Booking.opdækning_med_dug, Booking.buffet, Booking.buffetantal, Booking.bordopstilling FROM booking"

Nu får jeg så:
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'lokalenr' as part of an aggregate function.
Avatar billede mortrr Praktikant
01. marts 2003 - 15:09 #5
Kig nu alligevel efter.
Den brokker sig over at du mangler at angive 2 parametre. og eftersom der ikke er noget basalt galt med din forespørgsel, er det nok et par feltnavne. tekande? du staver kaffethe med h, men tekande uden.

- Morten
Avatar billede mortrr Praktikant
01. marts 2003 - 15:11 #6
Du skal have din group med i begge selects.

- Morten
Avatar billede tblaster Nybegynder
01. marts 2003 - 15:14 #7
Jeg har tilføjet en group i slutningen igen og får nu igen:

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 2.

Checker lige at der ikke er nogen stavefejl!
Avatar billede tblaster Nybegynder
01. marts 2003 - 15:20 #8
Jeg har lige lavet min sql igen med en god gang copy & paste. Det eneste som ikke er det samme alle 4 steder i select og group er at i group har jeg ikke MIN(booking.tid) as minTid, MAX(booking.tid) as maxTid med. Ellers er det helt ens.

Kan det være at fejlen ligger ved samlingerne hvor jeg har en UNION SELECT eller en af de andre funktioner?
Avatar billede mortrr Praktikant
01. marts 2003 - 15:26 #9
Så skal der ligge en begrænsning i odbc-driveren, på længde eller antal felter, men de burde ikke være i nærheden af noget der.

Prøv lige at kopiere hele sql'en over i en ny "query" i access, og se om det virker der.

- Morten
Avatar billede tblaster Nybegynder
01. marts 2003 - 15:31 #10
Query ... hvor finder jeg det?
Avatar billede mortrr Praktikant
01. marts 2003 - 15:40 #11
Forespørgsel, hvis dansk.

Opret en ny - designvisning - tilføj ingen tabeller, men vælg sql-visning i View.

- Morten
Avatar billede tblaster Nybegynder
01. marts 2003 - 15:49 #12
Jeg får så denne fejl:

SELECT-sætningen indeholder et reserveret ord eller argument, der er stavet forkert eller mangler, eller tegnsætningen er ikke korrekt.
Avatar billede mortrr Praktikant
01. marts 2003 - 16:11 #13
Kunne du ikke maile mig databasen? mortrr@hotmail.com

- Morten
Avatar billede mortrr Praktikant
01. marts 2003 - 16:25 #14
;-)

Der mangler en inner join lokaler on... i din union.
Den skal være den samme som i den første select.

- Morten
Avatar billede tblaster Nybegynder
01. marts 2003 - 16:36 #15
Yep ... det var det der var fejl. Men faktisk så hjalp det mig ikke en dyt :-( Problemet er at jeg skal have trukket følgende ud: Booking.andet ... det er en memo så jeg kan ikke trække den ud i min DISTINCT. Hvis jeg kun trækker den ud i min union så brokker den sig over at der ikke er lige så mange felter som i min anden select. Hvad kan jeg gøre?

Mortrr ... du skal nok få de point for spørgsmålet da du jo fandt fejlen! Kan du hjælpe med det andet?
Avatar billede mortrr Praktikant
01. marts 2003 - 16:52 #16
Det burde være nok at bruge
select distinct ... left(andet,200), ...
Det skal selvfølgelig være alle de steder hvor det refereres.
Altså
select Left(booking.andet,200) as andet
group by Left(booking.andet,200)
Jeg bruger ikke access så meget, men det er metoden jeg ville bruge på fx en sql-server.

- Morten
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