bardzo proszę o pomoc w zrozumieniu dlaczego dostaje dwa różne wyniki gdy do zapytania dodaje warunek WHERE.
Otóż:
1) Gdy zapytanie jest w takiej formie:
SELECT Players.id_player, SUM(Matches.pkt_player1) AS TOTAL FROM Players LEFT JOIN Matches ON Players.id_player = Matches.id_player1 WHERE Players.Groups_id_group=4 GROUP BY Players.id_player ORDER BY TOTAL DESC
Dostaje w wyniku 6 wierszy (czyli prawidłowo - tego właśnie oczekuje

CODE
+----+------+
| id | Tot |
+----+------+
| 1 | 8 |
+----+------+
| 2 | 4 |
+----+------+
| 3 | 2 |
+----+------+
| 4 | NULL |
+----+------+
| 5 | NULL |
+----+------+
| 6 | NULL |
+----+------+
| id | Tot |
+----+------+
| 1 | 8 |
+----+------+
| 2 | 4 |
+----+------+
| 3 | 2 |
+----+------+
| 4 | NULL |
+----+------+
| 5 | NULL |
+----+------+
| 6 | NULL |
+----+------+
2) Do tego zapytania dodaje Where Matches.date BETWEEN '2016-04-01' and '2016-04-15' i dostaje inny wynik.
Zapytanie wtedy ma forme:
SELECT Players.id_player, SUM(Matches.pkt_player1) AS TOTAL FROM Players LEFT JOIN Matches ON Players.id_player = Matches.id_player1 WHERE Players.Groups_id_group=4 AND matches.date BETWEEN '2016-04-01' AND '2016-04-15' GROUP BY Players.id_player ORDER BY TOTAL DESC
i w wyniku dostaje 3 wiersze:
CODE
+----+------+
| id | Tot |
+----+------+
| 1 | 8 |
+----+------+
| 2 | 4 |
+----+------+
| 3 | 2 |
| id | Tot |
+----+------+
| 1 | 8 |
+----+------+
| 2 | 4 |
+----+------+
| 3 | 2 |
Gdzie sie podziały "moje" NULL'e? Dodam, że w tabeli Matches są aktualnie tylko rekordy z datą between '2016-04-01' and '2016-04-15'. Wiec na moj amatorski rozum wyniki powinny byc identyczne.
Bardzo mi zależy na tym, żeby dostać jednak te dodatkowe rekordy z wartościami NULL.
Pomożecie?
