![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Wiam, mam takie 2 tabele
Kod invoice -buyer_id -paid 0 - niezaplacone, 1 - zaplacone companies -id_companies i zapytanie
i teraz tak Jeżeli tylko 1 część jest zgodna to zwraca 2 rekordy z pominięciem ostatniego warunku
Jeżęli w bazie są rekordy zgodne z drugim nawiasem to zapytanie zwraca mi tyle rekordów ile jest w tabeli companies. Co tu jest nie tak (IMG:style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
W where dałes OR i odnoszę wrażenie ze nie do końca zdajesz sobie sprawę jak on działa w połączenie z AND przed i po (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W where dałes OR i odnoszę wrażenie ze nie do końca zdajesz sobie sprawę jak on działa w połączenie z AND przed i po (IMG:style_emoticons/default/wink.gif) Możesz mnie oświecić (IMG:style_emoticons/default/questionmark.gif) |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
skoro tylko to jest prawdziwe: OR ( invoices.payment_date < '2012-8-01' AND invoices.paid = 0 ) AND invoices.companies_id = 1 to tracisz łączenie: invoices.buyer_id = companies.id_companies A jeśli tracisz łączenie, to wyświetlasz wszystkie dane ze wszystkich tabel w iloczynie kartezjańskim. A że określiłeś, warunek na pierwszą tabelą invoices.companies_id = 1 wiec iloczyn kartezjanski ogranicza się do wszystkick rekordów z tabeli drugiej + spełaniających warunek z tabeli pierwszej (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
A nie powinno byc tak?
Ten post edytował maly_swd 27.06.2012, 20:24:30 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
skowron-line... Jeśli nie jesteś pewien arytmetyki Boole'a lub wychodzą Ci głupoty bo na tym samym poziomie użyłeś AND i OR, to dla pewności obejmij co trzeba w nawiasy, a zobaczysz różnicę. Weź sobie dla pewności strzel
a b c d 0 0 0 0 1 0 0 0 ......... 0 1 1 1 1 1 1 1 jako zadanie domowe a AND b OR c AND d (a AND b) OR (c AND d) ((a AND b) OR c) AND d i inne kombinacje nawiasów, a zobaczysz którą wersję tak naprawdę wysmażyłeś oraz o którą Ci chodziło ;) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
skowron-line... Jeśli nie jesteś pewien arytmetyki Boole'a lub wychodzą Ci głupoty bo na tym samym poziomie użyłeś AND i OR, to dla pewności obejmij co trzeba w nawiasy, a zobaczysz różnicę. Weź sobie dla pewności strzel a b c d 0 0 0 0 1 0 0 0 ......... 0 1 1 1 1 1 1 1 jako zadanie domowe a AND b OR c AND d (a AND (IMG:style_emoticons/default/cool.gif) OR (c AND d) ((a AND (IMG:style_emoticons/default/cool.gif) OR c) AND d i inne kombinacje nawiasów, a zobaczysz którą wersję tak naprawdę wysmażyłeś oraz o którą Ci chodziło (IMG:style_emoticons/default/wink.gif) @thek szacun odpowiedz godna moda. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 14:45 |