#820

Atrod viltīgu NULL kļūdu un apej to

Vaicājumam «atrod klientus, kuriem nav neviena pasūtījuma», kas formulēts ar NOT IN, ir nejauka kļūda: ja apakšvaicājumā ir kaut viena rinda ar NULL, viss NOT IN klusi atgriež nulli rindu — bez kļūdas, bez brīdinājuma. Tas ir klasisks SQL trīsvērtību loģikas slazds. Drošais ekvivalents ir NOT EXISTS: tas atgriež rindu, kad iekšējais vaicājums neko neatrada, un ir imūns pret NULL. Pārraksti pārbaudi «klienti bez pasūtījumiem», izmantojot NOT EXISTS, lai vaicājums darbotos pareizi pat ar NULL datos. Parādi šādu klientu identifikatoru un email, sakārto pēc identifikatora.

Sagaidāmais izvades paraugs

Tā izskatās pareiza atbilde — tās rindu skaits ir pašai savs, tam nav jāatbilst shēmas tabulām.

idemail
3новый@email

Tava vaicājuma rezultāts parādīsies šeit