Avatar billede bobbedude Nybegynder
05. december 2001 - 10:18 Der er 45 kommentarer og
2 løsninger

Join SQL

Hmm hvad går der galt her:

strSQL = \"SELECT Count(sleevs.ID) AS CountOflink, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato\"
strSQL = strSQL & \"FROM kategorier LEFT JOIN sleevs ON kategorier.katid = sleevs.kategori\"
strSQL = strSQL & \"GROUP BY kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato;\" 

Set rs4 = Connect.Execute(strSQL)

Fejlen er:

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression \'kategorier.datoFROM kategorier LEFT JOIN sleevs ON kategorier.katid = sleevs.kategoriGROUP BY kategorier.katid\'.

sleevs.asp, line 311
linie 311 er der hvor SQLen køreres
Avatar billede nute Nybegynder
05. december 2001 - 10:20 #1
du mangler noen spaces i din SQL:

strSQL = \"SELECT Count(sleevs.ID) AS CountOflink, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato\"
strSQL = strSQL & \" FROM kategorier LEFT JOIN sleevs ON kategorier.katid = sleevs.kategori\"
strSQL = strSQL & \" GROUP BY kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato;\" 

/nute
Avatar billede eagleeye Praktikant
05. december 2001 - 10:20 #2
der mangler et mellemrum før FROM og igen ved GROUP BY::

strSQL = \"SELECT Count(sleevs.ID) AS CountOflink, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato\"
strSQL = strSQL & \" FROM kategorier LEFT JOIN sleevs ON kategorier.katid = sleevs.kategori\"
strSQL = strSQL & \" GROUP BY kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato;\" 
Avatar billede nute Nybegynder
05. december 2001 - 10:20 #3
hmmm...to hoder tenker likt på samme tid...nice, så er vi iallefall enige :)
Avatar billede bobbedude Nybegynder
05. december 2001 - 10:22 #4
Det hjalp en del nu er fejlen kun:

Microsoft OLE DB Provider for ODBC Drivers error \'80004005\'

[Microsoft][ODBC Microsoft Access Driver] Type mismatch in expression.
Avatar billede nute Nybegynder
05. december 2001 - 10:26 #5
denne bit:

kategorier.katid = sleevs.kategori

er begge kolonner av typen nummer ??
Avatar billede bobbedude Nybegynder
05. december 2001 - 10:28 #6
kategorier.katid er katid tal
sleevs.kategori er kategori tekst


Avatar billede eagleeye Praktikant
05. december 2001 - 10:30 #7
Du kan ikke join tal og tekst.
Har du i sleevs en kolonne med tal for katergorien ?
Eller har du i kategorier en kolonne katergori (tekst) ?
Avatar billede nute Nybegynder
05. december 2001 - 10:31 #8
så kan du ikke joine på dem...de *skal* være av samme type. har du ikke en nummerert ID på dine kategorier i tabellen \'sleevs\' ??
Avatar billede bobbedude Nybegynder
05. december 2001 - 10:33 #9
jo ID på sleevs
Avatar billede nute Nybegynder
05. december 2001 - 10:36 #10
prøv så denne:

strSQL = \"SELECT Count(sleevs.ID) AS CountOflink, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato\"
strSQL = strSQL & \" FROM kategorier LEFT JOIN sleevs ON kategorier.katid = sleevs.ID\"
strSQL = strSQL & \" GROUP BY kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato;\" 
Avatar billede eagleeye Praktikant
05. december 2001 - 10:38 #11
Den ID du har i sleevs, er den lig med katergorien? eller er den ID for en record i sleevs?


Du vil joine dine to tabeller hvor katergori er ens i de to tabeller.

Typist har man:
Kategorier:
katID : autonumber (tal)
kategorinavn : tekst

--
Sleevs:
sleevID : autonummer (tal)  <---- jeg gætter på det er den du kalder ID
katID : tal  <-------- du har kategori : tekst
Avatar billede bobbedude Nybegynder
05. december 2001 - 10:40 #12
Nix det er ID ikke øv..

Hvordan kan man så lave en count for at vise hvor mange links der er i kategorien
Avatar billede eagleeye Praktikant
05. december 2001 - 10:42 #13
har du kategorier en kolonne med tekst for kategorien??? så kan du evt lave join sådan her:

LEFT JOIN sleevs ON kategorier.kategori = sleevs.kategori
Avatar billede nute Nybegynder
05. december 2001 - 10:42 #14
ved å designe dine databaser normalt ;-)
Avatar billede nute Nybegynder
05. december 2001 - 10:45 #15
hmmm....det er rimelig dyrt å joine på tekst...
Avatar billede bobbedude Nybegynder
05. december 2001 - 10:49 #16
Jeg tror jeg kan bruge dette men hvordan ?

Cast( feltnavn as float)

CAST and CONVERT (T-SQL)

Explicitly converts an expression of one data type to another. CAST and CONVERT provide similar functionality.
Avatar billede eagleeye Praktikant
05. december 2001 - 10:49 #17
Ja det er rigtigt. Det vil være smartere at gemme katID i sleevs istedet for katergori (tekst).
Avatar billede eagleeye Praktikant
05. december 2001 - 10:51 #18
?? hvad indeholder din sleevs.kategori
biler
huse

eller et tal for kategorien gemt i et tekst felt??
Avatar billede bobbedude Nybegynder
05. december 2001 - 10:55 #19
tal ( i et tekst felt ) sorry
Avatar billede nute Nybegynder
05. december 2001 - 10:59 #20
bobbedude >> hvis vi prøver å oversette din SQL til plain dansk (eller norsk) så kan vi kanskje kaste litt annet lys over saken.

jeg tillater meg å forenkle den en smule, så er det lettere å eksemplifisere:

SELECT * FROM kategorier LEFT JOIN sleevs ON kategorier.katid = sleevs.kategori

Det du ønsker er følgende:
SELECT * FROM kategorier : hent alle kolonner fra tabell kategori
LEFT JOIN sleevs : hent alle kolonner fra tabellen sleevs
ON kategorier.katid = sleevs.kategori: hvor kolonnen \'kategorier.katid\' har samme verdi som kolonnen \'sleevs.kategori\'. For at denne siste del i det hele tatt skal ha noe for seg, så kreves det at det er en relasjon mellom kolonnene. som eagleeye skriver @ 05/12 2001 10:38:46 så skal/bør kategorier.katid være fremmednøkkel til sleevs primærnøkkel. dette er basal relasjonell database modellering. hvis det ikke er noe relasjon mellom de kolonner du prøver å matche på, så er det ikke noe poeng i å joine tabellene...
Avatar billede bobbedude Nybegynder
05. december 2001 - 11:03 #21
Kategorier.katid og sleevs.kategori
Er de samme tal det der er forskellen er at Kategorier.katid katid = tal og sleevs.kategori kategori = tekst.
Avatar billede nute Nybegynder
05. december 2001 - 11:04 #22
så gjør din \'sleevs.kategori\' om til en kolonne av typen tall.  det er den mest fornuftige måten å løse ditt problem på...
Avatar billede bobbedude Nybegynder
05. december 2001 - 11:08 #23
men med Cast og Convert kan man da lave et tekst felt om til tal ??
Avatar billede nute Nybegynder
05. december 2001 - 11:13 #24
UHA...jeg er ikke sikker på CAST eller CONVERT ting, men jeg mener \'TO_NUMBER\' er en standard konverterings prosedyre i SQL...

prøv dette:
strSQL = strSQL & \" FROM kategorier LEFT JOIN sleevs ON kategorier.katid = TO_NUMBER(sleevs.kategori)\"
Avatar billede bobbedude Nybegynder
05. december 2001 - 11:16 #25
TO_NUMBER giver denne fejl:

Microsoft OLE DB Provider for ODBC Drivers error \'80040e14\'

[Microsoft][ODBC Microsoft Access Driver] Undefined function \'TO_NUMBER\' in expression.


her er en forklaring på cast og convert.

http://www.asp101.com/samples/var_types.asp?strInput=10
Avatar billede nute Nybegynder
05. december 2001 - 11:17 #26
men når du er nødt til å konvertere en kolonne, skal du tenke på at du for en stund tilbake i tid har du tatt en *rimelig* hårreisende beslutning.

jeg vil heller foreslå å endre kolonne typen fra tekst til tall...
Avatar billede bobbedude Nybegynder
05. december 2001 - 11:21 #27
yeps det er jeg klar over men jeg ønsker ikke lige nu at lave dette felt til tal..
Avatar billede nute Nybegynder
05. december 2001 - 11:21 #28
det var ingenting i den artikkel som fortalte at den omhandlet hverken cast eller convert... den omhandlet convertering av VBScripts datatype variant til en spesifikk datatype. det har ingenting med SQL å gjøre...
Avatar billede nute Nybegynder
05. december 2001 - 11:23 #29
hvorfor \'ønsker ikke lige nu at lave dette felt til tal\' ??? du skaper da kun problemer for deg selv ved å la den være som tekst !!

jeg skal la være med å foreslå å endre til tall hvis fu gir meg én god grunn til at du ikke vil endre den ;-)
Avatar billede bobbedude Nybegynder
05. december 2001 - 11:24 #30
den eneste grund er at jeg så skulle til at ændre en ret stor del sider, men det ender nok med at jeg må til det aligevel
Avatar billede bobbedude Nybegynder
05. december 2001 - 11:31 #31
Men jeg tror lige jeg vil kikke lidt mere på CONVERT
Avatar billede nute Nybegynder
05. december 2001 - 11:33 #32
well...jeg er glad jeg ikke skal leke med dine databaser....

hva så med denne:

strSQL = strSQL & \" FROM kategorier LEFT JOIN sleevs ON kategorier.katid = CONVERT(number,sleevs.kategori)\"

men etter hva jeg kan se av dokumentasjonen jeg leser, så er faktisk ikke konvertering fra tekst til tall tillatt...

jeg tror den eneste mulighet er å endre dine scripts...
Avatar billede eagleeye Praktikant
05. december 2001 - 12:24 #33
Hmmm Havd indeholder sleevs.katergori ?????  et tal eller bogstaver?

LEFT JOIN sleevs ON kategorier.katid = CInt(sleevs.kategori)
Avatar billede bobbedude Nybegynder
05. december 2001 - 12:26 #34
eagleeye  >> sleevs.katergori er tekst
Avatar billede eagleeye Praktikant
05. december 2001 - 12:27 #35
Ja men et eks på den tekst... er det: 1, 2, 4 eller Aviser, TvBlade, ...
Avatar billede nute Nybegynder
05. december 2001 - 12:30 #36
eagleeye >> konvertering mellom text til numeric kolonner er ikke tillatt.

Avatar billede bobbedude Nybegynder
05. december 2001 - 12:37 #37
1 - 2 - 3 - 4 osv.
Avatar billede nute Nybegynder
05. december 2001 - 12:39 #38
bobbedude >> hvis du er sikker på at det kun er tall (ingen spaces eller noen andre tegn), så fungerer det som eagleeye har postet
Avatar billede bobbedude Nybegynder
05. december 2001 - 12:40 #39
eagleeye >>

strSQL = strSQL & \"FROM kategorier LEFT JOIN sleevs ON kategorier.katid = CInt(sleevs.kategori) \"

Giver fejlen:

Microsoft OLE DB Provider for ODBC Drivers error \'80040e10\'

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


Avatar billede bobbedude Nybegynder
05. december 2001 - 12:41 #40
nute  >> der er ingen mellem rum eller special tegn
Avatar billede nute Nybegynder
05. december 2001 - 12:44 #41
bobbedude >> du er også nødt til å selecte den kolonnen du joiner på...legg \'sleevs.kategori\' inn i din SELECT:

strSQL = \"SELECT Count(sleevs.ID) AS CountOflink, sleevs.kategori ...
Avatar billede bobbedude Nybegynder
05. december 2001 - 12:44 #42
Hvis jeg skriver SQLen ud ser den sådan ud :

SELECT Count(links.ID) AS CountOflink, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato FROM kategorier LEFT JOIN sleevs ON kategorier.katid = CInt(sleevs.kategori) GROUP BY kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato;
Avatar billede bobbedude Nybegynder
05. december 2001 - 12:52 #43
den laver ikke fejl nu ! Men den siger der er 0 i alle kategorier.
Avatar billede bobbedude Nybegynder
05. december 2001 - 12:55 #44
Ups SQLen er her:

strSQL = \"SELECT Count(sleevs.kategori) AS CountOflink, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato \"
strSQL = strSQL & \"FROM kategorier LEFT JOIN sleevs ON kategorier.katid = CInt(sleevs.kategori) \"
strSQL = strSQL & \"GROUP BY kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato;\"
Set rs4 = Connect.Execute(strSQL)
Avatar billede nute Nybegynder
05. december 2001 - 13:01 #45
du har heller ikke gjort det jeg ba deg om...du skal ikke COUNT\'e sleevs.kategori !!


strSQL = \"SELECT Count(sleevs.ID) AS CountOflink, sleevs.kategori, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato \"

Avatar billede bobbedude Nybegynder
05. december 2001 - 13:02 #46
Ups SQLen er her:

strSQL = \"SELECT Count(sleevs.kategori) AS CountOflink, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato \"
strSQL = strSQL & \"FROM kategorier LEFT JOIN sleevs ON kategorier.katid = CInt(sleevs.kategori) \"
strSQL = strSQL & \"GROUP BY kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato;\"
Set rs4 = Connect.Execute(strSQL)
Avatar billede bobbedude Nybegynder
05. december 2001 - 13:02 #47
Forkert her er den rigtige

strSQL = \"SELECT Count(sleevs.ID) AS CountOflink, kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato \"
strSQL = strSQL & \"FROM kategorier LEFT JOIN sleevs ON kategorier.katid = CInt(sleevs.kategori) \"
strSQL = strSQL & \"GROUP BY kategorier.katid, kategorier.katoverskrift, kategorier.adresse, kategorier.telefon, kategorier.fax, kategorier.email, kategorier.konperson1, kategorier.konperson2, kategorier.konperson3, kategorier.konperson4, kategorier.konperson5, kategorier.konperson6, kategorier.konperson7, kategorier.konperson8, kategorier.katbeskrivelse, kategorier.oprettetaf, kategorier.dato;\"
Set rs4 = Connect.Execute(strSQL)
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