0
私は2つのテーブルEXERCISEとEXERCISEUSERを持っています。私はすべての運動項目を列挙し、その運動がテーブルEXERCISEUSERに存在する場合に返すクエリに追加のフィールドを入れる必要があります。つまり、ユーザーがその運動をしたかどうかを知る必要があります。そうであれば、EXERCISEUSERに行があります。他のテーブルでROWSの数を取得
私の現在のクエリは次のとおりです。
SELECT
"E".*,
"T"."NAME" AS "LEVEL"
FROM
"EXERCISE" AS "E"
INNER JOIN
"EXERCISETYPE" AS "T"
ON
E.STO_FK_EXERCISETYPEEXERCISE = T.PK_EXERCISETYPE
INNER JOIN
"LEVEL" AS "L"
ON
L.PK_LEVEL = E.STO_FK_LEVELEXERCISE
WHERE
(
E.STATUS = 1)
AND (
L.STATUS = 1)
AND (
L.PK_LEVEL = 5)
ORDER BY
"T"."ORDER" ASC
私もPK_USERを提供します。
ありがとうございます!
私はサブクエリを使用して、私が望む結果に到達します。
SELECT
"E".*,
"T"."NAME" AS "LEVEL",
(SELECT COUNT(*) FROM STOUSER.EXERCISEUSER AS EU WHERE EU.STO_FK_EXERCISEEXERCISEUSER = E.PK_EXERCISE AND EU.STO_FK_USEREXERCISEUSER = 5978) AS MAKE_EXER_NUM
FROM
"STOUSER"."EXERCISE" AS "E"
INNER JOIN
"STOUSER"."EXERCISETYPE" AS "T"
ON
E.STO_FK_EXERCISETYPEEXERCISE = T.PK_EXERCISETYPE
INNER JOIN
"STOUSER"."LEVEL" AS "L"
ON
L.PK_LEVEL = E.STO_FK_LEVELEXERCISE
WHERE
(
E.STATUS = 1)
AND (
L.STATUS = 1)
AND (
L.PK_LEVEL = 5)
ORDER BY
"T"."ORDER" ASC
ありがとう!
最後の編集が問題の解決である場合は、それを回答として投稿し、元の質問に編集する代わりに回答としてマークしてください。 – turbo
相関サブクエリは、クエリに最も効率の悪い方法であることが多く、代わりに派生テーブルを使用します。そして、select *を決して使用しないでください! – HLGEM
クエリオプティマイザだけがそれを判断することができます。 –