[MySQL] Inne wyniki po dodaniu warunku WHERE, ... który nic nie powinien zmienić |
[MySQL] Inne wyniki po dodaniu warunku WHERE, ... który nic nie powinien zmienić |
3.04.2016, 22:23:30
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 3.04.2016 Ostrzeżenie: (0%) |
Witam,
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:
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 | +----+------+ 2) Do tego zapytania dodaje Where Matches.date BETWEEN '2016-04-01' and '2016-04-15' i dostaje inny wynik. Zapytanie wtedy ma forme:
i w wyniku dostaje 3 wiersze: CODE +----+------+ | 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? |
|
|
4.04.2016, 09:04:27
Post
#2
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) |
Ponieważ matches.date BETWEEN '2016-04-01' AND '2016-04-15' działa na wynik z LEFT JOINA gdzie są pewnie nulle, więc te nule nie spełniają warunku.
Jak chcesz aby było to filtrowane poprawnie to:
-------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
4.04.2016, 10:35:53
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 3.04.2016 Ostrzeżenie: (0%) |
Działa, dzięki.
|
|
|
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 08:51 |