Вопрос

Я разместил в пятницу (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». «CUSIMENT_ID»: неверный идентификатор

Это потому, что это за пределами внутреннего соединения кронштейна, то есть вне охвата? Я очень новый для SQL и не могу понять, почему он не будет работать. Я могу заставить его работать, используя SELECT SUNQUERIES (без присоединения), но я хочу также работать с присоединениями.

Если это имеет значение, я использую Toad для 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

Второе, что вы должны включить все столбцы, которые вы планируете использовать. Прямо сейчас подзапрос просто выбирает счет, но ON Статьи оговорок STUDY_ID. Отказ Вы можете исправить это, включая STUDY_ID В списке Secure Subquery, как:

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