tabellen koppelen + LIKE statement
femke
02/02/2008 15:07:00ik 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
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
14/11/2024 23:36:35Martijn B
02/02/2008 15:49:00Je 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:
LIKE is traag.
Zonder die eerste % kun je een index maken op de kolom name.
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:
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 -
02/02/2008 16:37:00Schrijf de query eens netjes uit, met een nette JOIN:
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
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%'
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
02/02/2008 16:39:00Frank -
02/02/2008 16:41:00Yep, 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.