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の場合は32番目をドロップするだけ 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
もう一度。