/ / SQLクエリに2つのWHEREを配置するのが難しい-mysql

SQLクエリに2つのWHEREを配置するのが難しい-mysql

SQLクエリの何が問題になっていますか?

で次のエラーを返し続けます WHERE building_id=:building_id

SQL構文にエラーがあります。チェックしてくださいそのマニュアル 使用する正しい構文のMySQLサーバーのバージョンに対応します 「:building_idおよびWHERE NOT EXISTS(SELECT 1 FROMts_roompref」の近く 5行目:SELECT COUNT(*)totalCount FROM ts_room WHERE building_id =:building_id AND WHERE NOT EXISTS(SELECT 1 FROM ts_roompref JOIN ts_request ON ts_roompref.request_id = ts_request.roompref_id AND day_id = 1 AND period_id = 1 WHERE ts_room.id = ts_roompref.room_id)

ここに私のコードです:

SELECT
COUNT(*) totalCount
FROM
ts_room
WHERE building_id=:building_id AND
WHERE
NOT EXISTS (
SELECT 1
FROM ts_roompref
JOIN ts_request
ON ts_roompref.request_id = ts_request.roompref_id
AND day_id = 1
AND period_id = 1
WHERE
ts_room.id = ts_roompref.room_id)

ここにSQLテーブルがあります- http://sqlfiddle.com/#!2/30297/8

回答:

回答№1の場合は3

2番目をドロップするだけ WHERE キーワード。

これは、SQLFiddleではコンパイルされません。 :buildingid.

これが実用的な例です.


回答№2については2

ANDの後に2番目のWHEREは必要ありません

... WHERE building_id=:building_id AND NOT EXISTS ...

答え№3の2

1つだけ必要です WHERE

SELECT
COUNT(*) totalCount
FROM
ts_room
WHERE building_id=:building_id AND

NOT EXISTS (
SELECT 1
FROM ts_roompref
JOIN ts_request
ON ts_roompref.request_id = ts_request.roompref_id
AND day_id = 1
AND period_id = 1
WHERE
ts_room.id = ts_roompref.room_id)

答え№4の2

AND あなたは書くべきではありません WHERE もう一度。