2

ここの誰かがこの非常に便利なクエリをまとめるのを手伝ってくれました!

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type')
GROUP BY r.id
HAVING COUNT(c.c_id) = 3
LIMIT 50 OFFSET 0

これはうまく機能しています!ただし、を使用して結果を注文しようとすると

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type')
ORDER BY r.usefulness DESC
GROUP BY r.id
HAVING COUNT(c.c_id) = 3
LIMIT 50 OFFSET 0

構文エラーが発生します。ここで明らかな何かが欠けていますか?

どうもありがとう!

4

2 に答える 2

3

クエリの一部に順序がありORDER BY、最後にある必要があります(LIMITおよびOFFSET...の前にこれを試してください:

SELECT * FROM results r 
INNER JOIN categories c on r.id = c.result_id 
WHERE c.name in ('$purpose', '$prop_type', '$loan_type')
GROUP BY r.id
HAVING COUNT(c.c_id) = 3
ORDER BY usefulness DESC
LIMIT 50 OFFSET 0

また、行の最後にスペースがあることを確認してください...

LIMIT x OFFSET yの短縮バージョンであるmysqlでは-あなたはただ書くことができることに注意してくださいLIMIT y,x

于 2012-04-14T00:59:45.543 に答える
1

ORDER BYの後に来る必要がありHAVINGます。

于 2012-04-14T00:58:59.137 に答える