Join met vier tabellen werkt niet correct

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco

Marco

14/11/2009 21:12:00
Quote Anchor link
Bedankt Klaasjan en Noppes. Het klopt inderdaad dat de functie goed werkte (ondanks de GROUP BY). Ik heb dan ook twee functies doorelkaar gehaald. De volgende tekst is wel het echte probleem.

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
        "
;
?>
Gewijzigd op 01/01/1970 01:00:00 door Marco
 
PHP hulp

PHP hulp

21/11/2024 20:59:26
 
Klaasjan Boven

Klaasjan Boven

14/11/2009 22:31:00
Quote Anchor link
Op zich zou dat geen probleem moeten zijn door de LEFT JOIN. Misschien komt het door het totaal misplaatste gebruik van GROUP BY?

Deze gebruik je namelijk alleen icm aggregate functies
 
Noppes

Noppes

14/11/2009 22:35:00
Quote Anchor link
Je GROUP BY klopt al niet

daar horen alle velden benoemd te worden die niet aggergate zijn

Voor mysql geldt doordat deze niet goed geconfigureerd is je geen foutmelding erop krijgt terwijl dat toch echt wel behoort te geschieden.
 



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.