Как построить условие на вывод много ко многим, чтобы все элементы обязательно были 0? - MySQL

Узнай цену своей работы

Формулировка задачи:

Согласен, странно сформулировал, в общем есть 2 таблицы, m_zakaz и mc_process. --------------

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' )
Если хоть 1 процесс имеет mc_process.COMPLETE = '0', то запись заказа не должна выбираться.

Решение задачи: «Как построить условие на вывод много ко многим, чтобы все элементы обязательно были 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' )

Оцени полезность:

13   голосов , оценка 3.692 из 5
Похожие ответы