Avatar billede fun22 Nybegynder
10. oktober 2004 - 20:24 Der er 11 kommentarer og
1 løsning

Søge i to tabeller

Hej

Hvordan søger jeg i to tabeller?
Begge tabeller indeholder et felt der hedder "titel".

Har prøvet med følgende men det giver fejl:

SELECT * FROM artikler, nyheder WHERE titel LIKE '%"& Request.Form("sogeord") &"%'

Får fejlen:
he specified field 'titel' could refer to more than one table listed in the FROM clause of your SQL statement.

Nogen der ved hvad der er galt?
Avatar billede hmortensen Nybegynder
10. oktober 2004 - 20:27 #1
SELECT * FROM artikler, nyheder WHERE artikler.titel LIKE '%"& Request.Form("sogeord") &"%' OR nyheder.titel LIKE '%"& Request.Form("sogeord") &"%'
Avatar billede fun22 Nybegynder
10. oktober 2004 - 20:34 #2
hmm det løser problemet.. Men af en eller anden grun udskriver den tre af alle de ting den finder... Ved du lige hvorfor den gør det?
Avatar billede hmortensen Nybegynder
10. oktober 2004 - 20:37 #3
Ikke lige, men prøv med SELECT DISTINCT * ....
Avatar billede fun22 Nybegynder
10. oktober 2004 - 20:38 #4
Det virker stadig ikke...
Jeg har EN nyhed i tabellen nyheder.. Men den skriver det tre gange.
Avatar billede fun22 Nybegynder
10. oktober 2004 - 20:39 #5
Hele min søge kode ser sådan her ud:

<%

    SQL = "SELECT DISTINCT * FROM artikler, nyheder WHERE artikler.status='Godkendt' AND artikler.titel LIKE '%"& Request.Form("sogeord") &"%' OR nyheder.titel LIKE '%"& Request.Form("sogeord") &"%'"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.open sql, conn, 1, 3
   
    If NOT (Rs.BOF AND Rs.EOF) Then
 
    do while not rs.EOF
%>   

  <tr>
    <td width="60%"><%=rs("titel")%>&nbsp;</td>
    <td width="40%"></td>
  </tr>
   
<%   
    RS.MoveNext
    Loop
    rs.close
   
    else
    response.write "<td colspan=2><center>Din søgning gav desvære ingen resultater!</center></td>"
    end if
%>
Avatar billede hmortensen Nybegynder
10. oktober 2004 - 20:46 #6
Gir den også 3 resultater hvis du kører sql'en direkte i databasen ?
Avatar billede fun22 Nybegynder
10. oktober 2004 - 20:53 #7
hvordan kører jeg den direkte?
Avatar billede hmortensen Nybegynder
10. oktober 2004 - 20:53 #8
Hvilken database bruger du ?
Avatar billede fun22 Nybegynder
10. oktober 2004 - 20:54 #9
access
Avatar billede hmortensen Nybegynder
10. oktober 2004 - 20:59 #10
Hvis du åbner databasen filen, kan du oprette en forespørgelse, og så kopiere din sql streng ind, og prøve den der.
Avatar billede stoffer Nybegynder
10. oktober 2004 - 21:19 #11
Distinct virker ikke her pga. du selecter alt fra begge tabeller. Dog burde den kun give dobbelt records, og ikke 3 gange. Så det må jeg indrømme jeg ikke helt forstår.

For at undgå det vil jeg bruge UNION:

SELECT titel FROM artikler WHERE artikler.titel LIKE '%etsøgeord%'
UNION
SELECT titel FROM nyheder WHERE nyheder.titel LIKE '%etsøgeord%'
ORDER BY titel

Eneste du skal huske på er at kolonnerne du selecter skal være HELT ens i navne. Er de ikke det kan det f.eks. løses sådan her "SELECT nyhedstitel as Titel...."

Har du brug for at finde ud af hvad der er nyheder og hvad der er artikler i din select kan du skrive:

SELECT titel, 'artikel' as [type] FROM artikler WHERE artikler.titel LIKE '%etsøgeord%'
UNION
SELECT titel, 'nyhed' as [type] FROM nyheder WHERE nyheder.titel LIKE '%etsøgeord%'
ORDER BY titel
Avatar billede fun22 Nybegynder
10. oktober 2004 - 21:42 #12
Stoffer Det virkede første gang.. og så var det også dejligt med den sidste funktion ;)
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