Avatar billede 00-behave Nybegynder
31. juli 2000 - 13:10 Der er 10 kommentarer og
1 løsning

SQL-streng i flere tabeller

Kan jeg lave en SQL-streng, der trækker data fra flere tabeller på én gang???
Avatar billede sone Nybegynder
31. juli 2000 - 13:14 #1
Ikke noget problem hvis de 2 tabeller har mindst ét felt tilfælles.

  SQL=\"SELECT k.key, t.type FROM T_key k, T_type t WHERE k.keyid=\" & keyid & \" AND k.typeid=t.typeid\"
Avatar billede 00-behave Nybegynder
31. juli 2000 - 13:36 #2
Jeg får nu en besked:

Too many fields defined !!!
Avatar billede sone Nybegynder
31. juli 2000 - 13:38 #3
Hvordan ser du forespørgsel ud ?
Avatar billede 00-behave Nybegynder
31. juli 2000 - 13:43 #4
strSQL = \"SELECT * FROM tblAfsnit, tblAnmeldelser, tblArbejdspapirer, tblArtikel, tblBog, tblKonferencepapirer, tblPopulaer WHERE FstForNavn LIKE \'%\" & strOrd & \"%\' OR AndForNavn LIKE \'%\" & strOrd & \"%\'\"
strSQL = strSQL & \" OR TreForNavn LIKE \'%\" & strOrd & \"%\' OR FjeForNavn LIKE \'%\" & strOrd & \"%\'\"
strSQL = strSQL & \" OR FemForNavn LIKE \'%\" & strOrd & \"%\' OR Titel LIKE \'%\" & strOrd & \"%\'\"
strSQL = strSQL & \" OR Abstract LIKE \'%\" & strOrd & \"%\' OR FrEO1 LIKE \'%\" & strOrd & \"%\'\"
strSQL = strSQL & \" OR FrEO2 LIKE \'%\" & strOrd & \"%\' OR FrEO3 LIKE \'%\" & strOrd & \"%\' OR FrEO4 LIKE \'%\" & strOrd & \"%\'\"
strSQL = strSQL & \" OR FrEO5 LIKE \'%\" & strOrd & \"%\' OR FrEO6 LIKE \'%\" & strOrd & \"%\' OR FrEO7 LIKE \'%\" & strOrd & \"%\'\"
strSQL = strSQL & \" OR FrEO8 LIKE \'%\" & strOrd & \"%\' OR FrEO9 LIKE \'%\" & strOrd & \"%\' OR FrEO10 LIKE \'%\" & strOrd & \"%\';\"
Avatar billede sone Nybegynder
31. juli 2000 - 13:54 #5
Prøv at udskrive strSQL og vis mig den
Avatar billede 00-behave Nybegynder
31. juli 2000 - 13:55 #6
SELECT * FROM tblAfsnit, tblAnmeldelser, tblArbejdspapirer, tblArtikel, tblBog, tblKonferencepapirer, tblPopulaer WHERE FstForNavn LIKE \'%hansen%\' OR AndForNavn LIKE \'%hansen%\' OR TreForNavn LIKE \'%hansen%\' OR FjeForNavn LIKE \'%hansen%\' OR FemForNavn LIKE \'%hansen%\' OR Titel LIKE \'%hansen%\' OR Abstract LIKE \'%hansen%\' OR FrEO1 LIKE \'%hansen%\' OR FrEO2 LIKE \'%hansen%\' OR FrEO3 LIKE \'%hansen%\' OR FrEO4 LIKE \'%hansen%\' OR FrEO5 LIKE \'%hansen%\' OR FrEO6 LIKE \'%hansen%\' OR FrEO7 LIKE \'%hansen%\' OR FrEO8 LIKE \'%hansen%\' OR FrEO9 LIKE \'%hansen%\' OR FrEO10 LIKE \'%hansen%\';
Avatar billede sone Nybegynder
31. juli 2000 - 13:58 #7
Første problem: ...WHERE FstForNavn LIKE...

Databasen ved ikke i hvilken tabel feltet FstNorNavn ligger, så det skal du fortælle den.
Det gør du ved at sige tabelnavn.feltnavn

Det er muligt at lave et alias i FROM: FROM tabelnavn t WHERE t.feltnavn
Avatar billede sone Nybegynder
31. juli 2000 - 13:59 #8
Jeg går ud fra at alle dine felter ligger i samme tabel - hvis ja, så skal du sætte tabel.id = andentabel.id for at finde de rigtige oplysninger i den anden tabel
Avatar billede 00-behave Nybegynder
31. juli 2000 - 14:02 #9
Felterne ligger i alle tabellerne.. det jeg vil er at hente alle poster der indeholder ordet i strOrd i et af pågældende felter i alle tabellerne.. en fritekstsøgning på tværs af tabeller...
Avatar billede sone Nybegynder
31. juli 2000 - 14:10 #10
Det kan du måske også godt lave - jeg tror bare det bliver en del mere kompliceret hvis ikke tabellerne hænger sammen (på tværs)

Hvis jeg f.eks. har følgende 2 tabeller:

Person
------
1  Peter
2  Kurt

Email
-----
1  psp@danmark.dk
2  kurt@danmark.dk

Så vil jeg kunne lave følgende:

SELECT navn, adresse FROM person p, email e WHERE p.id=e.id AND e.adresse LIKE \'%psp%\'
Avatar billede 00-behave Nybegynder
31. juli 2000 - 14:21 #11
okay
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