質問

金曜日に投稿しました(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

さて、その後、あなたが他の問題を打つかもしれないが、私はこれがあなたが始めることを望んでいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top