MySQLデータベースのテーブルを照会しようとしています。MySQLでAND ORを使用すると結果が返されません
基本的に、テーブルの列の値に基づいてクエリを実行する必要があります。だから、:
列A =値とthisIDは値
または列<値とthisIDが値
しかし、クエリがnullを返しているの配列であるが、データの配列である場合データベースにあります。編集:テーブルの背景と私がやろうとしていること。
インターフェイスからのユーザは、ビジネスエリアを選択します。そのビジネスエリアには多くの子エリア(部門など)があり、そのエリアには各部門に割り当てられたユーザーが多数存在する可能性があります。だから私はこのクエリにユーザーと領域の配列を渡しています。
割り当てタイプは、エントリがユーザに割り当てられ、3であるので、私は、ユーザ(ID)がそうアレイである場合、チェックしたい場合は、次の、割り当てタイプが1又は2である場合r.assigned_type = 3 AND r.assigned_id IN(26102,26132,26133,26134,44749)
3未満の場合、エントリは領域(サイト/部門)に割り当てられます。領域(ID)が配列に含まれているかどうかを確認したいのですが:r.assigned_type < 3 AND r.assigned_id IN(10901,10937,10938,10939,10940,10941)
ユーザと部門の両方のエントリがあり、ORを使用する必要がある場合があります。ユーザーと地域
正しい構文を使用していますか?私は文法上の誤りはありませんか?
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` = 78
AND `r`.`risk_type_id` = 10
AND `r`.`assigned` = '1'
AND `u`.`privilege_level` <= 7
AND ((`r`.`assigned_type` = '3' AND `r`.`assigned_id` IN(26102,26132,26133,26134,44749))
OR (`r`.`assigned_type` < '3' AND `r`.`assigned_id` IN(10901,10937,10938,10939,10940,10941)))
。私の頭の上から離れて、あなたは括弧の問題があるかもしれませんが、誰かがあなたを助けることができるようにあなたのロジックを明確に伝えるべきです。 –
あなたは 'assigned_type'をチェックし、異なるJOINSの条件で2つの異なるクエリを書くためにコードでIF条件とELSE条件を使用できませんか? –
CASEについては、列の値に応じて、問合せで大文字と小文字を使用できますか? – frobak