mysql objaśnienie działania zapytania

0

mam prośbę myście mi wyjaśnili jak działa zapytanie

select * from tabelka t1 
inner join tabelka2 t2 on 
t1.item = 0 or  (  t1.item = t2.item AND  (   t1.cat = 0 OR t1.cat = t2.cat    )  )

pytania:

  1. czy baza danych sprawdza cokolwiek w nawiasie jeżeli od razu napotka wartość t1.item = 0 ? czy po prosty ten pierwszy OR się w ogóle wtedy wykonuje?
  2. analogicznie jeżeli w pierwszym nawiasie t1.item nie będzie równe t2.item to czy pierwszy AND się w ogóle wykona?
0
  1. A czy t1.item nie może być typu int o wartości 0? Oczywiście, że wykonuje się wszystko.
  2. Jeżeli nie zostanie spełniony pierwszy warunek, to w przypadku operacji AND po co sprawdzać drugi?
0

skoro w 1. piszesz, że sprawdza się wszystko, to czemu w 2. piszesz, że "po co"?
czy mam to rozumieć tak, że jeśli jest OR to obie strony są sprawdzane zawsze, nawet jak już pierwsza strona zwraca true?
a w przypadku AND jak chociaż jedno false to nie sprawdza dalej?

[quote]
A czy t1.item nie może być typu int o wartości 0?
[/quote]
tam są same liczby, tylko mogą mieć różne wartości a ten warunek ogólnie wyciąga dokładnie to, co potrzebuję

tylko się tak zastanawiam nad działaniem tego zapytania

0

Jeżeli pierwsza część warunku jest spełniona, ta przed pierwszym OR to po co ma sprawdzać dalej? Natomiast jeżeli nie jest ona spełniona to sprawdza drugi warunek, sprawdza jego pierwszą część, jeśli jest spełniona to sprawdza jego dalszą część, bo masz tam AND i jeżeli

t1.cat = 0 OR t1.cat = t2.cat

jeden z tych warunków jest spełniony to spełniony jest cały drugi warunek. Z kolei jeżeli już to t1.item = t2.item

 nie jest spełnione to dalej nie sprawdza.
0

no i wlasnie o to mi chodzilo :) dzieki za informacje :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1