Grunden til at jeg har lavet 7 tabeller er at der er en event tabel, en news tabel, en content o.s.v. og de indeholder alle forskellige felter. Den søgning jeg nu vil lave skal være i alle 7 tabeller så jeg søger efter et ord i alle tabellerne.
Jeg havde prøvet med UNION men fik en fejl da det jo ikke var samme antal og typer felter jeg ville have returneret.
Er det virkelig ikke muligt at søge i flere tabeller der ikke er opbygget ens (det er jo derfor jeg har lavet flere tabeller)?
En query kan kun definere et result set og et resultset returnerer samme antal og type felter i alle rækker.
Du kan enten lade den applikation processe 7 queries (formentlig det smarteste) eller rette de queries til så de returnerer de samme felter (man kan godt selecte konstante udtryk).
Uanset om det er en Access form eller en PHP side, så har applikationen nemlig ikke nogle restriktioner om at der skal være samme antal og type felter.
Og hvis det laves godt så kan det heller ikke engang ses at det er forskellige queries der ligger bag.
Eksekverer min SQL sætning og udskriver, for derefter at eksekverer SQL sætning nr. 2 og udskrive og så fremdeles?
Hvis det er det du mener så kommer det ikke til at virke da jeg har en test på som udskriver at der ikke blev fundet noget hvis DBrec.eof or soegeord = "" derfor kan jeg få dig til evt at skrive et eksempel på det så jeg kan se hvad det er du mener?
Du burde nok løse problemet på en mere besværlig, men i længden bedre måde og mere relationel... Omstrukturer din database så du har 1 tabel med indhold og 1 tabel med typer. Så kan du også senere oprette flere typer eller nedlægge dem hvis du skulle få brug for det.
Jeg har nu lavet følgende, der er bare et lille problem med det og det er at hvis jeg søger nå noget som ikke findes udskriver den ikke teksten: "Søgningen på "&soegeord&" gav intet resultat" som den jo burde når DBrec er tom. Hvis jeg søger med en tom streng, udskriver den rigtig nok at man skal søge på noget – nogen der kan sige hvad jeg gør galt?
SQL = "SELECT * from content, events, news" Set DBrec = Conn.Execute(SQL)
if DBrec.eof then response.Write "Søgningen på <b>"&soegeord&" </b>gav intet resultat" elseif soegeord = "" then response.Write "For at få et søgeresultat skal du indtaste det ord eller den sætning du ønsker at søge på" else
SQL = "SELECT * from content WHERE (Text LIKE '%" & soegeord & "%')" Set DBrec = Conn.Execute(SQL) do while not DBrec.eof 'and DBrec("online")= "1" If DBrec("Text") = "" then Response.Write ("<img src=images/bullet.gif> <a href="&DBrec("FileName")&".asp?ID="&DBrec("ID")&">" &(DBrec("headline")) & "</a><p>") else tekst = Left(DBrec("Text"),130) tekst = Replace (tekst,"<br><img src=images/spacer.gif width=1 height=3>","<br>") tekst = Replace(tekst,"<b>","") Response.Write ("<img src=images/bullet.gif> <a href="&DBrec("FileName")&".asp?ID="&DBrec("ID")&">" &(DBrec("headline")) & "</a><br>"& Left(tekst,78) &"...<p>") end if DBrec.movenext loop
SQL = "SELECT * from events WHERE (Text LIKE '%" & soegeord & "%') or (EventName LIKE '%" & soegeord & "%')" Set DBrec = Conn.Execute(SQL)
do while not DBrec.eof 'and DBrec("online")= "1" If not DBrec("EventName") = "" then Response.Write ("<img src=images/bullet.gif> <a href=tilmelding.asp?ID="&DBrec("ID")&">" &(DBrec("EventName")) & "</a><br>"& DBrec("Text")&"...<p>") end if DBrec.movenext loop
SQL = "SELECT * from news WHERE (Headline LIKE '%" & soegeord & "%') or (Text LIKE '%" & soegeord & "%')" Set DBrec = Conn.Execute(SQL)
do while not DBrec.eof 'and DBrec("online")= "1" If not DBrec("Headline") = "" then Response.Write ("<img src=images/bullet.gif> <a href=nyheder.asp?ID="&DBrec("ID")&">" &(DBrec("Headline")) & "</a><br>"& DBrec("Text")&"...<p>") end if DBrec.movenext loop end if
Synes godt om
Ny brugerNybegynder
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.