Я пытаюсь создать представление из 3 таблиц. Есть одна строка, которая испортила все, и я не могу понять это правильно. Его в заявлении «IF» ниже. Я знаю, что не могу использовать WHERE внутри оператора if, но этого я и пытаюсь достичь.MySQL WHERE in IF Statement of View
Таблица 'c' (таблица qms_dpus
) представляет собой таблицу, в которой хранятся ОШИБКИ для каждого задания. То, что я пытаюсь сделать, это сказать:
«для каждого задания, которое находится внутри таблицы« a », проверьте таблицу« c », чтобы увидеть, соответствуют ли столбцы JOBNUM и столбцу IS_COMPLETE равен 0. Если это правда, 1 в новой колонке OPEN_DPUS
. Если оно ложно, то поставить 0 в колонке»
CREATE OR REPLACE VIEW `view_qms_linea` AS SELECT
a.ID AS `ID`,
a.JID AS `JID`,
b.HPL AS `HPL`,
b.LINE AS `LINE`,
a.PAREA AS `PRODAREA`,
a.JOBNUM AS `JOBNUM`,
b.MODELNUMBER AS `MODELNUMBER`,
b.CUSTOMER AS `CUSTOMER`,
b.PM_AE AS `PM_AE`,
b.PM_PE AS `PM_PE`,
b.PM_DE AS `PM_DE`,
b.PM_EE AS `PM_EE`,
b.PM_ED AS `PM_ED`,
b.PM_CE AS `PM_CE`,
IF(c.IS_COMPLETE=0 WHERE c.JOBNUM LIKE a.JOBNUM, 1, 0) AS `OPEN_DPUS`
FROM `gen_jobs_in_production` a, `gen_jobs_table` b, `qms_dpus` c
WHERE
a.JOBNUM LIKE b.WO
AND
b.LINE = 1
AND
a.PAREA != 4
AND
a.PAREA <= 7;
Когда я удалить оператор IF (и ссылки на таблицы„C“) код прекрасно работает и обеспечивает мне нужно то, что мне нужно, за исключением колонки OPEN_DPUS
, но если я заменил оператор IF следующим образом:
IF(c.JOBNUM LIKE a.JOBNUM AND c.IS_COMPLETE=0,1,0) AS `OPEN_DPUS`
Мое мнение предоставляет мне все данные, но вместо 12 записей (в настоящее время), он повторяет каждую запись 12 раз и бесконечно повторяет этот рисунок.
Я хотел бы показать свою структуру таблицы, но у меня есть много столбцов и только сделало бы это более запутанным ...
Любая помощь будет принята с благодарностью!
На самом деле. мой взгляд отображается пустым ... – Sanya
Вы правы, чтобы использовать JOIN, хотя ... возможно, что-то с моей структурой (я не ссылаюсь на правильные столбцы). – Sanya
'join' на таблицах' a' и 'b' следует пересмотреть. –