-1

私は金曜日に投稿し(sql Multiple count)、いくつかの応答がありました。

今日それらを実装しようとしても、同じエラーが発生し続けます。

私の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に非常に慣れていないので、SQLが機能しない理由を理解できません。一部のサブクエリ(結合なし)を使用して機能させることはできますが、結合を使用することもできるようにしたいと考えています。

重要な場合は、ToadforOracleを使用しています。

ありがとう。

4

2 に答える 2

4

クエリで結合するためです。そのクエリに名前を付けて、そのように参照します。

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
于 2010-10-25T11:00:08.610 に答える
2

まず、サブクエリにはエイリアスが必要です。変化する:

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

その後、他の問題が発生する可能性がありますが、これで開始できることを願っています。

于 2010-10-25T11:02:54.337 に答える