Avatar billede karstein Nybegynder
27. december 2000 - 16:22 Der er 29 kommentarer og
1 løsning

Søg i flere tabeller !

Hej

Jeg er ved at lave en søgemaskine, som skal søge i en database med ca. 20 tabeller.

Men hvis jeg skriver: From tabel1, tabel2, tabel3 Where osv...

Men den kommer med følgende fejl:

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

[Microsoft][ODBC Microsoft Access Driver] The specified field \'LinkName\' could refer to more than one table listed in the FROM clause of your SQL statement.


Er der et eller flere kloge hoveder der kan hjælpe ?
Avatar billede lp Nybegynder
27. december 2000 - 16:25 #1
det er fordi der er flere tabeller som indeholder det samme navn....du skal derfor lave en hjælper til din base, ved at gøre sådan:

select * from tabel1 t1, tabel2 t2 etc.....og senere.....t1.LinkName
Avatar billede lp Nybegynder
27. december 2000 - 16:26 #2
den ved jo ikke hvilken af de 2 den skal hente fra....altså først i den sql laver du forkortelser og i resten af dit statement skriver du forkortelsen.feltnavn ved hver eneste....
Avatar billede el_gnu Nybegynder
27. december 2000 - 16:27 #3
Det skyldes nok at du i to elller flere af tabellerne har et felt der hedder LinkName.
Du kan undgå dette ved at skrive:

From tabel1 as t1, tabel2 as t3, tabel3 as t3 Where t1.LinkName osv..
Avatar billede lp Nybegynder
27. december 2000 - 16:27 #4
jeg ser nu at det er en access database.......hvorfor har du så stillet spm i MySQL?
Avatar billede el_gnu Nybegynder
27. december 2000 - 16:28 #5
too slow...
Avatar billede lp Nybegynder
27. december 2000 - 16:29 #6
el_gnu -> he he, ja, man skal være hurtig herinde :-))
Avatar billede uffe_kld Nybegynder
27. december 2000 - 16:36 #7
Vil du virkelig kombinere(gange) resultatet fra 20 tabeller?

Er det ikke en union-forespørgsel du søger?

Select felt,felt..
from tabel1
where xxxxx
union select felt,felt,...
from tabel2
where xxxxx
:
:
osv.

Det er vigtig at du har samme antal og typer \"output\"-felter i hver select.





Avatar billede repsac Nybegynder
27. december 2000 - 16:38 #8
el_gnu --> \"as\" er jo unødvendigt, men måske mest rigtigt ...
Avatar billede el_gnu Nybegynder
27. december 2000 - 16:40 #9
Jeg synes bare det gi\'r mere mening hvis det står der.
Avatar billede lp Nybegynder
27. december 2000 - 16:44 #10
he he og så fylder det, jubiii :-) der er aldrig noget så godt som en MEGA LAAAAANG SQL STATEMENT :-)
Avatar billede karstein Nybegynder
27. december 2000 - 17:06 #11
<!-- Søgemaskine starter -->
             
             
<center><!-- #include file=\"search.htm\"--></center>
<%
strKeyword = Trim(Request.Form(\"Keyword\"))
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect(\"search.asp\")
Else
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
End If
strSQL = \"SELECT * FROM sabatti_vaben WHERE\"
strSQL = strSQL & \" (Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (sogeord LIKE \'%\" & strKeyword & \"%\')\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"produktsog.mdb\")
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Response.Write \"<center>\"
Response.Write \"<table border=\"\"0\"\" cellspacing=\"\"0\"\" width=\"\"80%\"\" cellpadding=\"\"3\"\" >\"
Do While Not rs.EOF
Response.Write \"<tr><td width=100% ><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >\" & rs(\"min\") & \"<a class=link href=redirect.asp?id=\"& rs(\"ID\")&\" TARGET=_self>\"& rs(\"Model\") &\"</A> - \" & rs(\"Beskrivelse\")&\"<BR></FONT><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"1\"\" ></FONT><HR></td></tr>\"
rs.MoveNext
Loop
Response.Write \"</FONT></table>\"
Else
Response.Write \"<center><p><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >S&oslash;gningen fandt ikke noget til dig!</center>\"
End If
myConn.Close
Set myConn = Nothing
%>

<!-- Søgemaskine slutter -->
Avatar billede karstein Nybegynder
27. december 2000 - 17:08 #12
Her har i den....

Prøv lige at se hvad i kan udlede.

Under From sabatti_vaben where

vil jeg så bare have feks.

FROM sabatti_vaben, Aya_vaben, browning_vaben (osv) where

Kan i følge mig.. ??
Avatar billede uffe_kld Nybegynder
27. december 2000 - 17:14 #13
Jeg sikker på du skal bruge en Union-forespørgsel, hvis Mysql ellers understøtter det?

strSQL = \"SELECT * FROM sabatti_vaben WHERE\"
strSQL = strSQL & \" (Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (sogeord LIKE \'%\" & strKeyword & \"%\')\"
strSQL = \"UNION SELECT * FROM aya_vaben WHERE\"
strSQL = strSQL & \" (Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (sogeord LIKE \'%\" & strKeyword & \"%\')\"

måske er det nødvendig at erstatter *, med de felter du ønsker at vise.
Avatar billede uffe_kld Nybegynder
27. december 2000 - 17:15 #14
sorry det skulle være:

strSQL = \"SELECT * FROM sabatti_vaben WHERE\"
strSQL = strSQL & \" (Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (sogeord LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \"UNION SELECT * FROM aya_vaben WHERE\"
strSQL = strSQL & \" (Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (sogeord LIKE \'%\" & strKeyword & \"%\')\"
Avatar billede karstein Nybegynder
27. december 2000 - 17:16 #15
Well, hvis i ikke allerede har luret mig, så er jeg altså ikke nogen ørn til det her, såderfor beder jeg jer om at kombinere det ind i eksemplet.... ;)
Avatar billede lp Nybegynder
27. december 2000 - 17:17 #16
union er ikke understøttet af MySQL.....men det var vist også en Access database....er problemet ikke løst ved at gøre som jeg beskrev.....
Avatar billede uffe_kld Nybegynder
27. december 2000 - 17:18 #17
Men der er noget der tyder på, at du kunne samle dine tabeller til en tabel, og føje et ekstra felt til, hvor du kan angive om det sabatti_vaben, Aya_vaben, browning_vaben (osv), hvis du vil søge på denne egenskab i anden sammenhæng.
Avatar billede lp Nybegynder
27. december 2000 - 17:19 #18
karstenin -> du skal bare skrive en forkortelse som ikke er redundant (altså som ikke hedder det samme som nogen anden) i din oprindelige sql og sætte den forkortelse ind foran feltnavn og adskille med et .
Avatar billede lp Nybegynder
27. december 2000 - 17:20 #19
uffe_kld -> det kan være svært at sige om hans tabeller kan samles med optimeret effekt - det skal man se en tabeloversigt for at kunne finde ud af....
Avatar billede lp Nybegynder
27. december 2000 - 17:22 #20
jeg kan desuden ikke se mere end 1 tabel i det karstenin har postet......er vi igang med noget nyt nu?
Avatar billede karstein Nybegynder
27. december 2000 - 17:28 #21
Er det sådan her i mener??

<!-- Søgemaskine starter -->
             
             
<center><!-- #include file=\"search.htm\"--></center>
<%
strKeyword = Trim(Request.Form(\"Keyword\"))
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect(\"search.asp\")
Else
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
End If
strSQL = \"SELECT * sabatti_vaben t1, Aya_vaben t2, browning_vaben t3 WHERE\"
strSQL = strSQL & \" (Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (sogeord LIKE \'%\" & strKeyword & \"%\')\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"produktsog.mdb\")
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Response.Write \"<center>\"
Response.Write \"<table border=\"\"0\"\" cellspacing=\"\"0\"\" width=\"\"80%\"\" cellpadding=\"\"3\"\" >\"
Do While Not rs.EOF
Response.Write \"<tr><td width=100% ><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >\" & rs(\"min\") & \"<a class=link href=redirect.asp?id=\"& rs(\"ID\")&\" TARGET=_self>\"& rs(\"Model\") &\"</A> - \" & rs(\"Beskrivelse\")&\"<BR></FONT><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"1\"\" ></FONT><HR></td></tr>\"
rs.MoveNext
Loop
Response.Write \"</FONT></table>\"
Else
Response.Write \"<center><p><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >S&oslash;gningen fandt ikke noget til dig!</center>\"
End If
myConn.Close
Set myConn = Nothing
%>

<!-- Søgemaskine slutter -->

Avatar billede lp Nybegynder
27. december 2000 - 17:31 #22
<!-- Søgemaskine starter -->
             
             
<center><!-- #include file=\"search.htm\"--></center>
<%
strKeyword = Trim(Request.Form(\"Keyword\"))
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect(\"search.asp\")
Else
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
End If
strSQL = \"SELECT * sabatti_vaben t1, Aya_vaben t2, browning_vaben t3 WHERE\"
strSQL = strSQL & \" (t1.Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (t1.sogeord LIKE \'%\" & strKeyword & \"%\')\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"produktsog.mdb\")
Set myConn = Server.CreateObject(\"ADODB.Connection\")
myConn.Open strDSN
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
Response.Write \"<center>\"
Response.Write \"<table border=\"\"0\"\" cellspacing=\"\"0\"\" width=\"\"80%\"\" cellpadding=\"\"3\"\" >\"
Do While Not rs.EOF
Response.Write \"<tr><td width=100% ><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >\" & rs(\"min\") & \"<a class=link href=redirect.asp?id=\"& rs(\"ID\")&\" TARGET=_self>\"& rs(\"Model\") &\"</A> - \" & rs(\"Beskrivelse\")&\"<BR></FONT><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"1\"\" ></FONT><HR></td></tr>\"
rs.MoveNext
Loop
Response.Write \"</FONT></table>\"
Else
Response.Write \"<center><p><FONT FACE=\"\"Verdana, Times New Roman\"\" SIZE=\"\"2\"\" >S&oslash;gningen fandt ikke noget til dig!</center>\"
End If
myConn.Close
Set myConn = Nothing
%>

<!-- Søgemaskine slutter -->

sådan......du skal have t1. ind før feltnavnet ved dine statements.....jeg ved ikke om denne virker....det kommer an på om model er i t1 tabellen er i t2........
Avatar billede lp Nybegynder
27. december 2000 - 17:33 #23
også skal du desuden have lavet en til hver tabel altså for at tage din sql statement.....:

strSQL = \"SELECT * sabatti_vaben t1, Aya_vaben t2, browning_vaben t3 WHERE\"
strSQL = strSQL & \" (t1.Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (t2.Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (t3.Model LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (t1.sogeord LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (t2.sogeord LIKE \'%\" & strKeyword & \"%\')\"
strSQL = strSQL & \" OR (t3.sogeord LIKE \'%\" & strKeyword & \"%\')\"
Avatar billede karstein Nybegynder
27. december 2000 - 17:34 #24
Alle mine tabeller er bygget op som følger:

| ID | Varenr | Model | Info | Beskrivelse | Billede | Sogeord | Min | Url |

Prøver lige om det andet virker ...
Avatar billede karstein Nybegynder
27. december 2000 - 17:43 #25
hmm.... nu melder den ikke nogen fejl, men den er helt galt....

Lige meget hvad jeg søger på, kommer den kun med udtræk fra aya_vaben tabellen....

Selvom jeg ikke søger på det...!!!!

Desuden fremkommer den ca. 13 gange....??!!?!?!?!
Avatar billede lp Nybegynder
27. december 2000 - 17:46 #26
jeg kan ikke hjælpe mere.....jeg kan ikke se ret meget af din kode, har meget lidt indblik i din database, men mener jeg har besvaret spm omkring fejlen som fremkom fordi din database var redundant og derfor meldte fejl!
Avatar billede karstein Nybegynder
27. december 2000 - 17:48 #27
Well, du hjalp mig da noget af vejen....

Jeg prøver selv om jeg kan løse det selv, ellers lader jeg spørgsmålet stå åbent.....

Men du har da fortjent ca 25 pt.

MVH
KARSTEIN.DK
Avatar billede karstein Nybegynder
27. december 2000 - 17:50 #28
Hov nu kagede jeg i det...!
Avatar billede lp Nybegynder
27. december 2000 - 17:54 #29
hvorfor egentlig 25 point om man må spørge, he he....svarede jeg ikke på dit spm ?

du kan nok se at det kan være lidt svært for mig at hjælpe dig, selvom jeg gerne ville, jeg har da efterhånden skrevet en del til dette og mener da helt bestemt det er mere end 25 point værd, men hvis du gerne vil have de 30 tilbage opretter jeg da gerne et spm så du kan få dem retur.....
Avatar billede karstein Nybegynder
28. december 2000 - 19:41 #30
Nej... - som du selv siger, så har du nok fortjent de 55 pt.


Men så kan du også lige fortælle mig om det er bøvlet at sætte den til at søge med \"\"....
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
Computerworld tilbyder specialiserede kurser i database-management

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