SELECT e.*,
(
SELECT COUNT(*) FROM
(
SELECT tm.exerciseID FROM exercise_targetedmuscles tm
WHERE tm.exerciseID = e.exerciseID
AND tm.isPrimary = 1
AND tm.targetedMuscleID IN (4,11)
) as musclesCovered
) as numMusclesCovered
FROM exercises e
ORDER BY numMusclesCovered DESC
基本的には、対象の筋肉の数(この例では、対象とする筋肉は4と11)で演習を注文したいと思います。しかし、サブクエリ(何らかの理由で?)は、eが何であるか分からないため、動作しません。MySQL:別のテーブルの行数を注文しますか?
私の結果を正しく注文するためにこのクエリをどのように入手できるかに関するアイデアはありますか?ありがとう!
編集:は、Randyの有益なコメントの後でこれを思いついた。
SELECT COUNT(tm.targetedMuscleID) as numMusclesCovered, e.*, tm.* FROM exercise_targetedmuscles tm
JOIN exercises e ON tm.exerciseID = e.exerciseID
WHERE tm.isPrimary = 1
AND tm.targetedMuscleID IN (4,11)
GROUP BY tm.exerciseID
ORDER BY numMusclesCovered DESC
ありがとうございました!
でサブクエリを必要としません。その最も内側のクエリを2つのレイヤーまで引き上げ、演習でそれに参加してください。 – Randy