|
| [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/
| |
|
|