/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[mySQL] søge i 2 tabeller
Fra : Leonard


Dato : 02-12-03 21:31

Jeg har 2 tabeller:
tabel1: id, navn
tabel2: id, navn1
og så vil jeg gerne søge i både navn og navn1 felterne og vise alle
hits, men kun vise et hit selvom søgningen hitter i både navn og
navn1, hvor id er det samme for begge.
Det er ikke for alle id i tabel1 at der findes et id i tabel2, men der
findes altid et id i tabel1 når der findes et id i tabel2.

SELECT tabel1.id FROM tabel1,tabel2 WHERE (navn LIKE '%$soeg%' or
navn1 LIKE '%$soeg%') AND tabel1.id=tabel2.id

duer ikke da den kun giver de hits hvor der er id i både tabel1 og
tabel2, men det er næsten det jeg gerne vil bare have alle de hits med
hvor der kun står noget i tabel1.

--
mvh Leonard http://leonard.dk/
Det er en muldvarp på motorcykel!
Hvad er det, der er småt, sort og meget hurtigt?
http://usenet.dk/netikette/citatteknik.html

 
 
Peter Brodersen (03-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 03-12-03 00:28

On Tue, 02 Dec 2003 21:30:52 +0100, Leonard <nospam@invalid.invalid>
wrote:

>tabel1: id, navn
>tabel2: id, navn1
>og så vil jeg gerne søge i både navn og navn1 felterne og vise alle
>hits, men kun vise et hit selvom søgningen hitter i både navn og
>navn1, hvor id er det samme for begge.
>Det er ikke for alle id i tabel1 at der findes et id i tabel2, men der
>findes altid et id i tabel1 når der findes et id i tabel2.

Sjov konstruktion. Jeg vil næsten foreslå, hvis du kører MySQL 4.0:

(SELECT id FROM tabel1 WHERE navn LIKE '%$soeg%')
UNION
(SELECT id FROM tabel2 WHERE navn1 LIKE '%$soeg%')

--
- Peter Brodersen

Ugens sprogtip: skodder (og ikke skoder)

Leonard (03-12-2003)
Kommentar
Fra : Leonard


Dato : 03-12-03 10:16

Peter Brodersen <usenet@ter.dk> wrote:

>Sjov konstruktion. Jeg vil næsten foreslå, hvis du kører MySQL 4.0:

Ja, den er blevet lidt umulig, men sådan er det. Og desværre er eg kun
nået til 3.23.58
--
mvh Leonard http://leonard.dk/
Det er en muldvarp på motorcykel!
Hvad er det, der er småt, sort og meget hurtigt?
http://usenet.dk/netikette/citatteknik.html

Peter Brodersen (03-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 03-12-03 20:12

On Wed, 03 Dec 2003 10:15:56 +0100, Leonard <nospam@invalid.invalid>
wrote:

>>Sjov konstruktion. Jeg vil næsten foreslå, hvis du kører MySQL 4.0:
>
>Ja, den er blevet lidt umulig, men sådan er det. Og desværre er eg kun
>nået til 3.23.58

Tjah, så må man improvisere. Jeg LEFT JOIN'er tabel2 på nu, så vil
"navn1" i tabel2 være NULL i de tilfælde, id'et kun findes i tabel1.
Det vil virke, fordi din forudsætning var, at alle id'er i tabel2 også
fandtes i tabel1, så vi risikerer ikke at "overse" noget fra tabel2.

Et stk. løsning, der virker under 3.23 (og ret sikkert en del ældre
versioner):

SELECT tabel1.id FROM tabel1 LEFT JOIN tabel2 ON tabel1.id=tabel2.id
WHERE (navn LIKE '%$soeg%' or navn1 LIKE '%$soeg%');

--
- Peter Brodersen

Ugens sprogtip: trafik (og ikke traffik)

Leonard (03-12-2003)
Kommentar
Fra : Leonard


Dato : 03-12-03 21:00

Peter Brodersen <usenet@ter.dk> wrote:

>Tjah, så må man improvisere. Jeg LEFT JOIN'er tabel2 på nu, så vil
>"navn1" i tabel2 være NULL i de tilfælde, id'et kun findes i tabel1.
>Det vil virke, fordi din forudsætning var, at alle id'er i tabel2 også
>fandtes i tabel1, så vi risikerer ikke at "overse" noget fra tabel2.

Jep, det virker ligesom jeg vil have det.
Jeg har aldrig fået kigget på det med Join, men det må jeg til, så jeg
forstår hvad det er jeg gør, når jeg gør som du har foreslået.

--
med venlig hilsen
Leonard - http://leonard.dk/

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste