Avatar billede tos Praktikant
08. november 2001 - 17:25 Der er 16 kommentarer og
4 løsninger

Søgning i flere MySQL tabeller

Hvordan vil en QUERY til følgende se ud?

Jeg har 2 tabeller (sektioner og dokumenter):
dokumenter: docref, titel, dato
sektioner: index, docref, indhold

Jeg skal søge i \"sektioner.indhold\" og \"dokumenter.titel\"

Resultatet skal være alle records fra \"documenter.titel\" i stigende dato orden
Avatar billede all-technology.com Nybegynder
08. november 2001 - 17:51 #1
select sectioner.indhold,dokumenter.dato from sektioner,dokumenter where dokumenter.docref=sektioner.docref order by dokumenter.dato asc
Avatar billede tos Praktikant
08. november 2001 - 20:53 #2
jeg fik hvis forklaret det lidt skidt.... jeg prøver igen :)

Jeg har forsøgt følgende:
SELECT distinct parentid FROM sektioner WHERE sektioner.indhold LIKE \'%$test%\'

Jeg har 2 tabeller: \"dokumenter\" og \"sektioner\" som begge har feltet \"parentid\" (jeg skal have en liste af parentid\'s tilbage). Jeg skal søge i \"dokumenter.titel\" og \"sektioner.indhold\"

dokumenter eks:
=========================
index  titel                parentid
--------------------------------------
  1    Dette er en test    dokument
  2    Søren er sød        ugeblad
  3    Test er godt        aviser


sektioner eks:
=========================
index  indhold                parentid
--------------------------------------
  1    test test test test    dokument
  2    uha uha uha uha        dokument
  3    test af noget tekst    dokument
  4    bla, bla, bla          ugeblad

Avatar billede disky Nybegynder
09. november 2001 - 08:41 #3
du siger du vil søge to steder, men dit eget eksempel søger kun et sted.

Hvad mener du ? :-)
Avatar billede tos Praktikant
09. november 2001 - 09:41 #4
Ok... jeg skal ha en liste af (distinct) \"parentid\"... jeg er ligeglad med hvilken tabel det enkelte parentid kommer fra...
Avatar billede disky Nybegynder
09. november 2001 - 09:42 #5
Det kan du ikke i en sql sætning.

lav

select distinct(parentid) from dokumenter
select distinct(parentid) from sektioner

Avatar billede runesoft Nybegynder
09. november 2001 - 09:55 #6
er det det her du mener?

SELECT distinct s.parentid FROM sektioner s inner join dokumenter d WHERE s.indhold LIKE \'%$test%\' and d.titel like \'%$test%\'
Avatar billede runesoft Nybegynder
09. november 2001 - 09:57 #7
nej, vent lidt. Det skal nok være en left join.
Avatar billede runesoft Nybegynder
09. november 2001 - 09:58 #8
og så skal det være \'or\' istedet for \'and\'
Avatar billede disky Nybegynder
09. november 2001 - 09:58 #9
det er lidt svært at sige hvad han egentligt ønsker for, i svaret 09:41:33 siger han jo ikke noget om \"like \'%test%\'\" :)
Avatar billede tos Praktikant
09. november 2001 - 10:27 #10
Takker for det, men det er ikke helt godt :( Jeg får følgende fejl:

SELECT distinct s.parentid FROM sektioner s inner join dokumenter d WHERE s.indhold LIKE \'%test%\' and d.titel like \'%test%\' connected but not to table
Avatar billede tos Praktikant
09. november 2001 - 10:33 #11
... og med diverse tilretninger:
SELECT distinct s.parentid FROM sektioner s LEFT JOIN dokumenter d WHERE s.indhold LIKE \'%test%\' OR d.titel LIKE \'%test%\' connected but not to table
Avatar billede tos Praktikant
09. november 2001 - 10:42 #12
Vi prøver noget andet:

I java ville det se ud.. lidt ala:

Vector pid = new Vector();
while(dokumenter != null)
{
  if(dokumenter.title LIKE \'%test%\')
    v.addelement(dokumenter.parentid);
}

while(sektioner != null)
{
  if(sektioner.indhold LIKE \'%test%\')
    v.addelement(sektioner.parentid);
}
return V
Avatar billede disky Nybegynder
09. november 2001 - 10:46 #13
tos:

nu kan du ikke bruge \'like\' i java :-)
Avatar billede tos Praktikant
09. november 2001 - 11:07 #14
disky: I know.... pseodo-kode :)
Avatar billede disky Nybegynder
09. november 2001 - 11:08 #15
okay :)

Jeg mener stadigvæk ikke du kan gøre det i en statement, havde mysql haft views, eller stored procedures kunne du havde gjort det.
Avatar billede mortenfn Nybegynder
09. november 2001 - 15:10 #16
Avatar billede disky Nybegynder
09. november 2001 - 15:17 #17
problemmet er jo at så vidt jeg forstår er der ikke nogen reel kobling imellem dem.

Avatar billede mortenfn Nybegynder
09. november 2001 - 15:42 #18
jo i rækken parentid
Avatar billede runesoft Nybegynder
10. november 2001 - 17:17 #19
Nu er det jo ikke helt til at se ud fra oplysningerne, men hvis jeg havde relationer som parentid, ville det være fordi at jeg havde en anden tabel med parentid som primær nøgle. I så fald ville sql\'en blive noget med to left join.  Vi må nok vente med flere konklusioner, før tos vender tilbage med lidt uddybende oplysninger.
Avatar billede tos Praktikant
10. november 2001 - 17:26 #20
Jeg takker for diverse tips og ideér... jeg har selv fixet det.... LEFT JOIN!
Takker og bukker endnu engang :)
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