Left Join toont niet alle records

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

 - Diov  -

- Diov -

18/02/2014 19:54:38
Quote Anchor link
Beste,

Ik heb onderstaande query:
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
<?php
$perweek
= DB::select("SELECT u.username,
            p.promogever_id,
            p.datum,
            COUNT(p.promonemer) As aantal
        FROM leden AS u
        LEFT JOIN promo AS p
        ON u.username = p.promogever_id
        WHERE
            p.web = ?
            AND DATE(p.datum) >= CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY
            AND verwijder = 0  
        GROUP BY promogever_id
        ORDER BY COUNT(promonemer) DESC"
, array(Session::get('web')));        
?>


Deze selecteert alle promos per gebruiker per groep.
Overzicht tabellen:
promos --> promo
gebruikers --> leden
groepen --> web_user

Nu voert die deze query zeer goed uit, maar er ontbreekt mij iets.
Alle gebruikers die geen promos hebben, komen niet in de lijst.
M.a.w : Als aantal nul is, dan komt dat lid niet in de lijst.

Heb al verschillende zaken geprobeerd maar ik weet niet hoe ik het moet oplossen
Alvast bedankt
Diov
 
PHP hulp

PHP hulp

17/11/2024 05:27:45
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

18/02/2014 20:24:27
Quote Anchor link
tabel promo (p) staat in een outer join, dus als je dan in de WHERE clause controleert op een kolom uit die tabel dan is er geen waarde voor die kolom als niet aan join voorwaarden wordt voldaan.
Kortom neem het mee in de join voorwaarden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
....
LEFT JOIN promo AS p
        ON u.username = p.promogever_id AND p.web = ?
.....
 



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.