Я пишу запрос SQL, в который я хотел бы добавить столбец к набору записей, значение которого основано на существовании записи в другой таблице. У меня есть левое соединение, присоединяющееся к таблицам, и я предполагаю, что мне нужно сделать какой-то поворот в моем SQL, но я не знаком с поворотом таблиц.
Мой существующий SQL -
SELECT tabs.name,tabs.id AS tabid,tabs.sort,fields.id AS fieldid, fields.label
FROM tabs
INNER JOIN fields
ON tabs.id = fields.tabid
LEFT JOIN fields_reports
ON fields_reports.fieldid = fields.id
WHERE fields_reports.reportid = 57
GROUP BY fields.id
ORDER BY tabs.sort, fields.id
В SQL произошло то, что он извлекает поле (которое является ядром оператора) и вкладки (которые по сути являются категориями). Таблица fields_reports сопоставляет поля с отчетами, которые я создаю.
Что мне нужно сделать, так это добавить в мое утверждение столбец, в котором говорится: если в текущем поле есть запись в таблице fields_reports с номером отчета, переданным в (57), тогда присвойте значение столбца 1, иначе 0.
Редактировать: У меня есть другая проблема с запросом. В настоящее время запрос только извлекает поля, прикрепленные к одному отчету. Вместо использования регистра, есть ли способ сделать подзапрос для выбора из таблицы fields_reports, чтобы я мог извлечь все поля и затем добавить столбец к отчету?
Это запрос, который теперь извлекает записи, но извлекает только одно поле отчета.
SELECT tabs.name,tabs.id AS tabid,tabs.sort,fields.id AS fieldid, fields.label,
CASE WHEN fields_reports.id IS null THEN 0 ELSE 1 END AS inReport
FROM fields
INNER JOIN tabs
ON tabs.id = fields.tabid
LEFT JOIN fields_reports
ON fields_reports.fieldid = fields.id
WHERE fields_reports.reportid = 57
GROUP BY fields.id
ORDER BY tabs.sort, fields.id
Дайте мне знать, если я открою новый вопрос для этого.