Каков самый простой способ сделать часть WHERE
в зависимости от результата JOIN
? Я понимаю, что это очень неоднозначный и запутанный вопрос, поэтому позвольте мне просто показать вам, что я пытаюсь достичь:Предложение WHERE, если соответствует
SELECT m.member_id, m.first_name, m.last_name
FROM cal_form_answers a
INNER JOIN cal_form_elements e
USING(element_id)
INNER JOIN cal_forms f
USING(form_id)
LEFT JOIN members m
USING(member_id)
WHERE f.org_id = ?
AND m.org_id = ?
AND e.form_id = ?
GROUP BY a.member_id
ORDER BY a.member_id
Во-первых, обратите внимание, что вопросительные знаки не являются недействительным синтаксисом Я использую CodeIgniter, который использует их как связанные параметры.
Строка 10 (AND m.org_id = ?
) зависит от того, действительно ли находит что-то LEFT JOIN
. Если в таблице members
нет совпадения, тогда строка 10 становится ненужной. На самом деле это становится проблемой. Я хотел бы ограничить результаты по строке 10 , если в таблице участников нет. В этом случае я просто хотел бы проигнорировать эту часть предложения WHERE
.
Я считаю, что этого можно добиться с помощью подзапросов, хотя я, по общему признанию, не знаю, как выработать синтаксис. Есть ли другой путь? Если да, то как еще этот результат может быть достигнут? Если нет другого способа, может кто-нибудь продемонстрировать реализацию подзапроса для этой ситуации и объяснить, как это работает?
Спасибо!
Так почему бы вам не указать эти условия в части условия соединения? – zerkms