0
基本的に、同じテーブルのカラムの値に基づいて異なるWHERE_IN句が必要なので、同じクエリです。SELECTの値に基づいてwhere_in MySQLクエリでIFまたはCASEを使用できますか?
したがって、以下のクエリを見てください。 r.assigned_typeは1または2のいずれかであり、/またはr.assigned_id IN句が必要です。
私はこれを行うことはできますか?
SELECT `r`.`risk_id`, `r`.`assigned_type`, `r`.`risk_type_id`, `r`.`risk_name`, `r`.`next_review`, `r`.`last_review`, `r`.`status`, `a`.`area_name`, `u`.`first_name`, `u`.`last_name`
FROM `risk_assessments` `r`
LEFT JOIN `users` `u` ON `u`.`id` = `r`.`assigned_id`
LEFT JOIN `areas` `a` ON `a`.`area_id` = `r`.`assigned_id`
WHERE `r`.`org_id` = '3'
AND `r`.`risk_type_id` = '1'
AND `r`.`assigned` = '1'
AND `u`.`privilege_level` <= '7'
AND `r`.`assigned_id` IN('5', '10', '11', '12', '13', '14', '15')
OR `r`.`assigned_id` IN('9', '14')
また、選択サブクエリが必要ですか?
さらに悪いことに、テーブル、DB構造およびコードを再フォーマットする必要がありますか?
私は何をしたいのは、このようなもの(例えば、目的のために短縮クエリ)である:
SELECT `r`.`risk_id`, `r`.`assigned_type`, `r`.`risk_type_id`
FROM `risk_assessments` `r`
WHERE `r`.`org_id` = '3'
AND `r`.`assigned` = '1'
AND `u`.`privilege_level` <= '7'
CASE WHERE r.assigned_type = 2
`r`.`assigned_id` IN('5', '10', '11', '12', '13', '14', '15')
ELSE
`r`.`assigned_id` IN('9', '14')
mmm、im '不明な列' r.assigned_type 'in where句' – frobak
私はassigned_typeを選択しているので、その値をクエリに渡していませんか? – frobak
私は私に似ています、 "assigned_type"はテーブルr(risk_assessments)の列ですか?不足しているバックティックでエラーが発生する可能性はありますか?私はaswerでそれらを追加します! – sebkrueger