Join met drie tabellen werkt niet correct
Marco
15/11/2009 11:16:00Ik heb drie tabellen: nieuws, nieuws_reacties, nieuws_fotos.
Ik gebruik onderstaande query om de data op te halen. Het resultaat moet een nieuwsbericht zijn met een fototje en er moet te zien zijn hoe veel reacties het nieuwsbericht heeft.
Er is alleen een probleem wanneer er geen nieuws_reactie_id, foto_id aan een nieuwsbericht is gekoppeld: de nieuws_id(FK) uit de nieuws_reactie tabel ontbreekt dan. Kortom onderstaande query is niet mogelijk wanneer de nieuws_id uit de nieuws_reactie tabel of foto tabel ontbreekt. Hoe zou ik een juiste query moeten schrijven?
Ik gebruik onderstaande query om de data op te halen. Het resultaat moet een nieuwsbericht zijn met een fototje en er moet te zien zijn hoe veel reacties het nieuwsbericht heeft.
Er is alleen een probleem wanneer er geen nieuws_reactie_id, foto_id aan een nieuwsbericht is gekoppeld: de nieuws_id(FK) uit de nieuws_reactie tabel ontbreekt dan. Kortom onderstaande query is niet mogelijk wanneer de nieuws_id uit de nieuws_reactie tabel of foto tabel ontbreekt. Hoe zou ik een juiste query moeten schrijven?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function getAllNieuws($limit) {
$query = "
SELECT
n.nieuws_id, n.kop, n.subkop,n.datum, n.bericht, ns.image_id, ns.image_name, ns.type, ns.size, ns.nieuws_id, COUNT(r.nieuws_reacties_id) AS aantalReacties, r.naam, r.datum, r.bericht AS reactie, r.nieuws_id
FROM
nieuws n
LEFT JOIN
nieuws_fotos ns
ON
ns.nieuws_id = n.nieuws_id
LEFT JOIN
nieuws_reacties r
ON
r.nieuws_id = n.nieuws_id
GROUP BY
??????
ORDER BY
n.datum DESC
LIMIT
:limit
";
?>
function getAllNieuws($limit) {
$query = "
SELECT
n.nieuws_id, n.kop, n.subkop,n.datum, n.bericht, ns.image_id, ns.image_name, ns.type, ns.size, ns.nieuws_id, COUNT(r.nieuws_reacties_id) AS aantalReacties, r.naam, r.datum, r.bericht AS reactie, r.nieuws_id
FROM
nieuws n
LEFT JOIN
nieuws_fotos ns
ON
ns.nieuws_id = n.nieuws_id
LEFT JOIN
nieuws_reacties r
ON
r.nieuws_id = n.nieuws_id
GROUP BY
??????
ORDER BY
n.datum DESC
LIMIT
:limit
";
?>
PHP hulp
21/11/2024 20:50:18Michel W
26/11/2009 23:18:00ga eens spelen met inner,right joins :)
of lees een tutorial ;)
http://www.phphulp.nl/php/tutorials/3/694/1818/
of lees een tutorial ;)
http://www.phphulp.nl/php/tutorials/3/694/1818/
Boris Mattijssen
26/11/2009 23:37:00Trouwens is dit sneller qua typwerk:
ON r.nieuws_id = n.nieuws_id
Kan je vervangen in
USING(nieuws_id)
Of het qua prestatie ook sneller is weet ik niet..
ON r.nieuws_id = n.nieuws_id
Kan je vervangen in
USING(nieuws_id)
Of het qua prestatie ook sneller is weet ik niet..