質問
金曜日に投稿しました(SQLの複数のカウント)そしていくつかの反応がありました。
今日それらを実装しようとしましたが、同じエラーが発生し続けます。
現在のSQLコードは次のとおりです。
SELECT MBDDX_STUDY.STUDY_NAME,
COUNT(MBDDX_EXPERIMENT.STUDY_ID)
AS NUMBER_OF_EXPERIMENTS
FROM MBDDX_STUDY
INNER JOIN MBDDX_EXPERIMENT
ON MBDDX_STUDY.ID = MBDDX_EXPERIMENT.STUDY_ID
INNER JOIN (SELECT COUNT(MBDDX_TREATMENT_GROUP.GROUP_NO)
FROM MBDDX_TREATMENT_GROUP)
ON MBDDX_TREATMENT_GROUP.STUDY_ID = MBDDX_STUDY.ID
GROUP BY MBDDX_STUDY.STUDY_NAME
エラーが発生し続けます:
ORA-00904:"MBDDX_TREATMENT_GROUP"."STUDY_ID":無効な識別子
それは内部結合ブラケットの外側にあるためでしょうか。つまり、範囲外?私は SQL を初めて使用するため、なぜ機能しないのか理解できません。選択サブクエリ(結合なし)を使用して機能させることはできますが、結合も使用できるようにしたいと考えています。
それが重要であれば、私はToad for Oracleを使用しています。
ありがとう。
解決
は、クエリに参加しているので。そのようにそのクエリに名前を付け、それを参照してください。
SELECT MBDDX_STUDY.STUDY_NAME
, COUNT ( MBDDX_EXPERIMENT.STUDY_ID )
AS NUMBER_OF_EXPERIMENTS
FROM MBDDX_STUDY
INNER JOIN MBDDX_EXPERIMENT
ON MBDDX_STUDY.ID = MBDDX_EXPERIMENT.STUDY_ID
inner JOIN ( SELECT study_id, COUNT ( MBDDX_TREATMENT_GROUP.GROUP_NO )
FROM MBDDX_TREATMENT_GROUP group by study_id ) AS my_query
ON my_query.STUDY_ID = MBDDX_STUDY.ID
GROUP BY MBDDX_STUDY.STUDY_NAME
他のヒント
一つには、サブクエリは、別名を持っている必要があります。変更します:
inner JOIN ( SELECT COUNT ( MBDDX_TREATMENT_GROUP.GROUP_NO )
FROM MBDDX_TREATMENT_GROUP )
ON MBDDX_TREATMENT_GROUP.STUDY_ID = MBDDX_STUDY.ID
と
inner JOIN ( SELECT COUNT ( MBDDX_TREATMENT_GROUP.GROUP_NO )
FROM MBDDX_TREATMENT_GROUP ) as CountAlias
ON MBDDX_TREATMENT_GROUP.STUDY_ID = MBDDX_STUDY.ID
2つ目は、あなたが使用する予定のすべての列を含める必要があるということです。今、サブクエリはちょうど数を選択するが、ON
節参照がSTUDY_ID
。あなたが好きなサブクエリ選択リストにSTUDY_ID
を含むことによってこれを修正することができます:
inner JOIN (
SELECT STUDY_ID
, COUNT(MBDDX_TREATMENT_GROUP.GROUP_NO) as GroupCount
FROM MBDDX_TREATMENT_GROUP) as CountAlias
ON MBDDX_TREATMENT_GROUP.STUDY_ID = MBDDX_STUDY.ID
さて、その後、あなたが他の問題を打つかもしれないが、私はこれがあなたが始めることを望んでいます。
所属していません StackOverflow