Nechápu SQL, nebo SQL nechápe mě? rubrika: Databáze: SQL
Reálný dotaz nad MySQL 5.1 (InnoDB), a nechápu, co se to to děje.
Máme tabulku stock_lists reprezentující naskladnění a tabulku stock_list_items reprezentující položky naskladnění. Položka naskladnění se váže k produktu a byla objednávana v počtu ordered_amount. Tenhle dotaz funguje a má vrátit id produktu v jednom sloupci a celkové objednané nenaskladněné (sl.stocked_at IS NULL) množství ve sloupci druhém.
Problém: Potřebujeme spočítat množství jen pro stock listy, které nemají state cancelled. Logicky jsme tedy přidali podmínku ...AND NOT sl.state ='cancelled' a ouha... Vypadly mi nejen položky se stavem cancelled, ale i všechny ostatní položky, které měly tenhle sloupec na NULL. Vyřešilo to ...AND (sl.state IS NULL OR NOT sl.state = 'cancelled').
Tuhle chybu udělal kolega, ale pravděpodobně bych ji udělal taky. O co se jedná? Proč ty se stavem NULL vypadnou taky?
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře