Avatar billede nielschristiansen Nybegynder
22. december 2003 - 02:36 Der er 13 kommentarer

hvordan kan jeg søge i flere tabeller på en gang

Hej jeg har fået lavet en søgning i en tabel og det er fint nok men nu vil jeg gerne kunne søge i 2 tabeller fra den samme form hvordan gør jeg  det (php)
Avatar billede Slettet bruger
22. december 2003 - 02:42 #1
Hvordan ser tabellerne ud, og hvad ønsker du at kunne søge på?

Eventuelt kan du bare lave to queries.
Avatar billede arne_v Ekspert
22. december 2003 - 08:01 #2
MySQL >= 4.0:

(SELECT felt1,felt2,felt3 FROM tabel1 WHERE ...)
UNION
(SELECT felt1,felt2,felt3 FROM tabel2 WHERE ...)
Avatar billede arne_v Ekspert
22. december 2003 - 08:01 #3
Hvis man skal søge i 2 tabeller er det tit et tegn på at de 2 tabeller
skulle have været 1 tabel.
Avatar billede nielschristiansen Nybegynder
22. december 2003 - 10:25 #4
i den ene tabel vil jeg søge på dato,overskrift,tekst og i den anden tabel vil jeg kun søge på sti men jeg kunne vel godt slå de 2 tabeller sammen
Avatar billede arne_v Ekspert
22. december 2003 - 10:36 #5
UNION kræver kun at de returnerede felter er kompatible man kan sagtens
have forskellige felter i WHERE betingelserne.
Avatar billede nielschristiansen Nybegynder
22. december 2003 - 10:37 #6
kan man slå 2 tabeller sammen i mysql admin eller skal man starte forfra med at putte alle data ind i dem igen
Avatar billede arne_v Ekspert
22. december 2003 - 10:37 #7
Men som sagt så kan flere tabeller med N felter ofte laves
om til 1 tabel med N+1 felter (det sidste felt angiver hvilken
tabel den hørte til før) i den slags tilfælde.
Avatar billede arne_v Ekspert
22. december 2003 - 10:38 #8
Du må kunne lave en INSERT SELECT se:
  http://www.mysql.com/doc/en/INSERT_SELECT.html
Avatar billede nielschristiansen Nybegynder
22. december 2003 - 10:39 #9
jeg prøvede
$for = mysql_query("SELECT dato,overskrift,tekst FROM rdnwo_dk.nyheder WHERE tekst LIKE '%$tekst_soeg%' ORDER by dato DESC");
union
$for = mysql_query("SELECT sti FROM rdnwo_dk.link WHERE sti LIKE '%$tekst_soeg%'");

men det virkede ikke
Avatar billede Slettet bruger
22. december 2003 - 13:53 #10
Nej, man kan kun lave en union, hvis der kommer et lignende reultat ud af de to SELECT.

Lav det som 2 queries.
Avatar billede mickeyboy Nybegynder
23. december 2003 - 15:01 #11
Niels.... du skriver du gerne vil søge på dato, overskrift, tekst i den ene tabel og sti i den anden.

Men hvordan skal resultatet se ud? Er der nogle oplysninger som skal være identiske i de to tabeller?

Beskriv evt hvad du skal bruge resultatet til. Så kan jeg måske lettere gennemskue hvordan SQL skal se ud.


Eksempel:
SELECT  tb001.Dato
    ,  tb001.Overskrift
    ,  tb001.Tekst
    ,  tb002.Sti
FROM    tb001
  ,    tb002
WHERE  tb002.reference_id = tb001.id
Avatar billede nielschristiansen Nybegynder
23. december 2003 - 15:17 #12
ok dato, overskrift, tekst er en nyheds tabel så der skal resultatet bare være
et echo af de data der i tabellen

men sti er et link som man kan trykke på for at påbegynde et download
Avatar billede nielschristiansen Nybegynder
23. december 2003 - 15:27 #13
det der er vigtigt i sti er at echo "<a href='map/$data[0]'>$data[0]</a><br>"; ser sådan her  hvis ikke virker det ikke med mindre der er nogle der en bedre måde at gøre det på
jeg er lutter ører
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