Как построить условие на вывод много ко многим, чтобы все элементы обязательно были 0? - MySQL
Формулировка задачи:
Согласен, странно сформулировал, в общем есть 2 таблицы, m_zakaz и mc_process.
--------------
Если хоть 1 процесс имеет mc_process.COMPLETE = '0', то запись заказа не должна выбираться.
m_zakaz
--------------CODE NAME COMPLETE
-------------- --------------mc_process
--------------CODE ZAKAZ_CODE NAME COMPLETE
-------------- Связаны так: m_zakaz.CODE = mc_process.ZAKAZ_CODE Мне нужно вывести все записи из m_zakaz , где m_zakaz.COMPLETE = '0' и (вот тут непонятки) где все процессы для данного заказа имеют mc_process.COMPLETE = '1' Что-то вродеSELECT m_zakaz.CODE FROM m_zakaz LEFT JOIN mc_process ON m_zakaz.CODE = mc_process.ZAKAZ_CODE WHERE m_zakaz.COMPLETE = '0' AND( Все процессы для данного заказа имеют mc_process.COMPLETE = '1' )
Решение задачи: «Как построить условие на вывод много ко многим, чтобы все элементы обязательно были 0?»
textual
Листинг программы
SELECT m_zakaz.CODE FROM m_zakaz LEFT JOIN mc_process ON m_zakaz.CODE = mc_process.ZAKAZ_CODE WHERE m_zakaz.COMPLETE = '0' AND not exists (select 1 from mc_process mp where mp.zakaz_code = m_zakaz.code and mp.COMPLETE <> '1' )