Zoeken in verschillende tabellen.
Ik heb (oa) 1 tabellen waarin gezocht moet worden: songs en artists.
Je kan dan zoeken op songs->title en op artists->name. Ik heb nu
Code (php)
1
$lQuery = DB::query("SELECT * FROM songs WHERE songs.title LIKE(" . DB::escape('%' . $_GET['zoek'] . '%') . ") OR artists.name LIKE(" . DB::escape('%' . $_GET['zoek'] . '%') . ")");
maar dat werkt dus niet.
Om de resultaten te printen heb ik enkel de gegevens van songs nodig.
Wie o wie kan mij helpen?
Alvast bedankt voor het lezen :)
Mvg,
Rune
Je moet kolommen gewoon benoemen in de select list, en geen * gebruiken.
Dus:
Nu heb ik dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
$lQuery = DB::query("SELECT
s.id,
s.title,
s.artist,
s.genre
FROM
songs AS s, artists AS a
WHERE
s.title LIKE (" . DB::escape('%' . $_GET['zoek'] . '%') . ")
OR
a.name LIKE (" . DB::escape('%' . $_GET['zoek'] . '%') . ")");
s.id,
s.title,
s.artist,
s.genre
FROM
songs AS s, artists AS a
WHERE
s.title LIKE (" . DB::escape('%' . $_GET['zoek'] . '%') . ")
OR
a.name LIKE (" . DB::escape('%' . $_GET['zoek'] . '%') . ")");
Maar nu gaat hij elk liedje in de database 2 keer laten zien...
>> http://seseria.be/ajax/zoek.php?zoek=basto
Bart V B op 31/10/2012 14:11:04:
Volgens mij kan je hiervoor DISTINCT gebruiken.
Bij deze laat hij alle nummers nog steeds zien :/
Dat klopt, je maakt er een cross join van, kijk in mijn eerdere query
Ger van Steenderen op 31/10/2012 15:33:42:
Dat klopt, je maakt er een cross join van, kijk in mijn eerdere query
Ja, ik zie het, deze werkt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$lQuery = DB::query("SELECT DISTINCT
s.id,
s.title,
s.artist,
s.genre
FROM
songs AS s, artists AS a
WHERE
s.artist = a.id
AND(
s.title LIKE (" . DB::escape('%' . $_GET['zoek'] . '%') . ")
OR
a.name LIKE (" . DB::escape('%' . $_GET['zoek'] . '%') . ")
)
");
s.id,
s.title,
s.artist,
s.genre
FROM
songs AS s, artists AS a
WHERE
s.artist = a.id
AND(
s.title LIKE (" . DB::escape('%' . $_GET['zoek'] . '%') . ")
OR
a.name LIKE (" . DB::escape('%' . $_GET['zoek'] . '%') . ")
)
");
Dankuwel!
Gewijzigd op 31/10/2012 22:11:28 door Aad B