Avatar billede plato Juniormester
18. maj 2003 - 21:41 Der er 18 kommentarer og
1 løsning

Søg i flere tabeller.

Hejsa NG.

Håber der er én der kan hjælpe mig.

Lidt info:

Tabel 'Trailer' indeholder titel, dato, og ext_link på en film.

Tabel 'TrailerDetail' indeholder detaljer omkring en film.

Jeg bruger denne her søgekode:

' Opbygger en dynamisk SQL streng
strSQL = "SELECT ID, titel, detalje, dato FROM Trailer WHERE titel like '%" & strKeyword & "%'  ORDER BY titel"

Den søger kun i 'Trailer', dvs. den kan kun søge på dato og titel. Jeg vil gerne man kunne udvide den søgning, så den kan søge både i 'Trailer' og 'TrailerDetail', på den måde kan besøgende søge både på titel og f.eks. skuespiller (som er i TrailerDetail)

Jeg prøvede med f.eks at den skulle søge i 'Omtale' i 'TrailerDetail'.
Derfor skrev jeg TrailerDetail.Omtale og satte
OR Omtale LIKE '%" & strKeyword & "%'

Men det virkede ikke..

Nogen der kan hjælpe mig. Og er det forsåeligt det jeg har skrevet?
Avatar billede cesil Nybegynder
18. maj 2003 - 21:52 #1
lav en join mellem de to tabeller
Det forudsættes at der er TrailerDetail er et felt der kæder tabellerne sammen. Jeg har her kaldt det trailerid

strSQL = "SELECT Trailer.ID as trailerid, Trailer.titel, Trailer.detalje, Trailer.dato TrailerDetail.* FROM Trailer inner join TrailerDetail on TrailerDetail.trailerid = Trailer.id WHERE Trailer.titel like '%" & strKeyword & "%'  ORDER BY Trailer.titel"
Avatar billede plato Juniormester
18. maj 2003 - 21:56 #2
Der er et felt i 'Trailer' der hedder Detalje som forbinder til 'TrailerDetail'

Skal den ovenstående kode stadig se sådan ud så?
Avatar billede cesil Nybegynder
18. maj 2003 - 21:58 #3
hvis detalje indeholder trailer's id, så prøv det her.

strSQL = "SELECT Trailer.ID as trailerid, Trailer.titel, Trailer.detalje, Trailer.dato TrailerDetail.* FROM Trailer inner join TrailerDetail on TrailerDetail.detalje = Trailer.id WHERE Trailer.titel like '%" & strKeyword & "%'  ORDER BY Trailer.titel"
Avatar billede plato Juniormester
18. maj 2003 - 22:01 #4
Begge tabeller ('Trailer' og  'TrailerDetail') har et ID felt som skal stemme overens for at en film kan vises på siden.
Avatar billede cesil Nybegynder
18. maj 2003 - 22:03 #5
Så skal det se således ud

strSQL = "SELECT Trailer.ID as trailerid, Trailer.titel, Trailer.detalje, Trailer.dato TrailerDetail.* FROM Trailer inner join TrailerDetail on TrailerDetail.id = Trailer.id WHERE Trailer.titel like '%" & strKeyword & "%'  ORDER BY Trailer.titel"
Avatar billede plato Juniormester
18. maj 2003 - 22:04 #6
Tabel 'Trailer* indeholder

titel
dato
Ext_link


Tabel 'TrailerDetail' indeholder

pic
omtale
skuespiller
instruk
m.m.


kolonnen Detaljer i tabel 'Trailer' forbinder 'Trailer' og 'TrailerDetail' samt at ID skal stemme overens.
Avatar billede plato Juniormester
18. maj 2003 - 22:05 #7
Fino jeg prøver. Og vender tilbage :)
Avatar billede cesil Nybegynder
18. maj 2003 - 22:07 #8
hvis id i de to tableller skal stemme overens så prøv den jeg sendt 22:03:00
Avatar billede plato Juniormester
18. maj 2003 - 22:08 #9
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine does not recognize 'Trailer.dato TrailerDetail.*' as a valid field name or expression.

/search.asp, line 30
Avatar billede cesil Nybegynder
18. maj 2003 - 22:10 #10
ah sorry der manglede et komma

strSQL = "SELECT Trailer.ID as trailerid, Trailer.titel, Trailer.detalje, Trailer.dato, TrailerDetail.* FROM Trailer inner join TrailerDetail on TrailerDetail.id = Trailer.id WHERE Trailer.titel like '%" & strKeyword & "%'  ORDER BY Trailer.titel"
Avatar billede plato Juniormester
18. maj 2003 - 22:10 #11
Prøver den. 22:03
Avatar billede plato Juniormester
18. maj 2003 - 22:12 #12
Okies nu virker koden.

Så sætter jeg vel bare
OR Omtale LIKE '%" & strKeyword & "%'

for de kolonner jeg vil søge i..ik?
Avatar billede plato Juniormester
18. maj 2003 - 22:16 #13
Nu vil jeg gerne have Omtale kolonnen med fra 'TrailerDetail'

Hvordan skal den sættes ind... Når jeg har set det, tror jeg godt jeg kan hitte det ud.
Avatar billede cesil Nybegynder
18. maj 2003 - 22:19 #14
sådan her.

strSQL = "SELECT Trailer.ID as trailerid, Trailer.titel, Trailer.detalje, Trailer.dato, TrailerDetail.omtale FROM Trailer inner join TrailerDetail on TrailerDetail.id = Trailer.id WHERE Trailer.titel like '%" & strKeyword & "%'  ORDER BY Trailer.titel"
Avatar billede plato Juniormester
18. maj 2003 - 22:27 #15
Hvis jeg søger på alm. ord som jeg ved findes i én omtale for en film, giver søgning intet resultat.

Den søger altså ikke i kolonnen 'Omtale' i tabel 'TrailerDetail'

Søgning på en titel virker som det skal. (Men er det samme som før)

Jeg logger af nu. Men kigger her igen i morgen tidlig ca. 08:15 tiden.
Avatar billede cesil Nybegynder
18. maj 2003 - 22:32 #16
er du sikker på der er omtale til den film du søger?
Hvis du er så prøv og tjek om de to id'er hvirkelig er ens så det er de rigtige film der bliver parret.
Avatar billede plato Juniormester
19. maj 2003 - 07:07 #17
Der er over 700 film, og alle passer overens med ID.

Men uanset hvilke ord jeg skriver, som ikke er en titel, skrive den intet resultat.
Avatar billede plato Juniormester
19. maj 2003 - 07:20 #18
Men nu jeg kigger efter. Der er ikke noget i tabellen der hedder 'trailerid'. Tænker på Trailer.ID as trailerid.
Avatar billede plato Juniormester
19. maj 2003 - 07:48 #19
Den er hjemme... Jeg lavede trailerid om til ID. Satte

OR Omtale LIKE '%" & strKeyword & "%' ind i den sidste del.

Nu virker det.

Tak!
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