Join met drie tabellen werkt niet correct

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco

Marco

15/11/2009 11:16:00
Quote Anchor link
Ik 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?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
        "
;
?>
 
PHP hulp

PHP hulp

22/12/2024 12:29:08
 
Michel W

Michel W

26/11/2009 23:18:00
Quote Anchor link
ga eens spelen met inner,right joins :)

of lees een tutorial ;)
http://www.phphulp.nl/php/tutorials/3/694/1818/
 
Boris Mattijssen

Boris Mattijssen

26/11/2009 23:37:00
Quote Anchor link
Trouwens 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..
 



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.