tabellen koppelen + LIKE statement

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Femke

femke

02/02/2008 15:07:00
Quote Anchor link
ik probeer de volgende query uit te voeren, maar deze geeft geen resultaat, kun je niet tabellen koppelen icm een LIKE statement?

Voorbeel query:

SELECT tabel_a.objectid,tabel_a.functie,tabel_b.objectid, tabel_b.name FROM tabel_a,tabel_b WHERE tabel_b.name LIKE '%marjolein%' AND tabel_a.objectid=tabel_b.objectid
 
PHP hulp

PHP hulp

14/11/2024 23:36:35
 
Martijn B

Martijn B

02/02/2008 15:49:00
Quote Anchor link
Je query zie er volgens mij wel goed uit.

Weet je zeker dat de records die je zoekt bestaan.
Dus dat beide voorwaarde,s in WHERE voor een minstens 1 record kloppen.

Ik zou trouwens dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
...WHERE tabel_b.name = 'marjolein%'...


LIKE is traag.
Zonder die eerste % kun je een index maken op de kolom name.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Frank -

Frank -

02/02/2008 16:37:00
Quote Anchor link
Schrijf de query eens netjes uit, met een nette JOIN:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
SELECT
  tabel_a.objectid,
  tabel_a.functie,
  tabel_b.objectid,
  tabel_b.name
FROM
  tabel_a
    INNER JOIN
      tabel_b ON tabel_a.objectid = tabel_b.objectid
WHERE
  tabel_b.name LIKE '%marjolein%'

En zoals reeds is gezegd, het gebruik van LIKE is af te raden, zeker wanneer je begint met een wildcard %.

In PostgreSQL kun je met Tsearch2 aan de slag om gebruik te maken van FULLTEXT search, in MySQL ben je eigenlijk wel verplicht om met Sphinx aan de slag te gaan. Tenzij je de fout maakt om de MyISAM-engine te gebruiken, daar kun je niks mee, behalve fulltext search in MySQL... Raar maar waar.

Edit: Even voor de duidelijkheid INNER toegevoegd aan de JOIN.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Martijn B

Martijn B

02/02/2008 16:39:00
Quote Anchor link
@pgFrank:

Die JOIN die je daar gebruikt is standaard toch een inner join?
 
Frank -

Frank -

02/02/2008 16:41:00
Quote Anchor link
Yep, dat is een INNER JOIN. INNER is de default, die hoef je dus niet te noteren, vandaar dat ik hem in 9 van de 10 gevallen weg laat.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.