Pregunta

Me publicado el viernes ( sql múltiples recuento ) y tenía unas cuantas respuestas.

Después de haber intentado ponerlas en práctica hoy en día, sigo obteniendo el mismo error.

Mi código SQL actual es:

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

sigo obteniendo el error:

  

ORA-00904: "MBDDX_TREATMENT_GROUP" "STUDY_ID": inválido identificador

¿Es porque está fuera de la combinación interna del soporte, es decir, fuera de alcance? Soy muy nuevo a SQL y no puedo entender por qué no lo puedo trabajar. Puedo conseguir que funcione con productos escogidos subconsultas (sin juntas), pero quiero también ser capaz de trabajar con uniones.

Si importa cualquier estoy usando Toad para Oracle.

Gracias.

¿Fue útil?

Solución

Debido a que se une con una consulta. Dar un nombre a esa consulta, y se refieren a ella de esa manera:

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

Otros consejos

Por un lado, una subconsulta debe tener un alias. Cambio:

inner JOIN ( SELECT COUNT ( MBDDX_TREATMENT_GROUP.GROUP_NO )
    FROM MBDDX_TREATMENT_GROUP )
ON MBDDX_TREATMENT_GROUP.STUDY_ID = MBDDX_STUDY.ID

a

inner JOIN ( SELECT COUNT ( MBDDX_TREATMENT_GROUP.GROUP_NO )
    FROM MBDDX_TREATMENT_GROUP ) as CountAlias
ON MBDDX_TREATMENT_GROUP.STUDY_ID = MBDDX_STUDY.ID

La segunda cosa es que usted tiene que incluir todas las columnas que va a utilizar. En este momento, la subconsulta simplemente selecciona una cuenta, pero las referencias cláusula ON STUDY_ID. Usted puede arreglar que al incluir STUDY_ID en la lista de selección sub consulta, como:

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

Ahora, después de eso, que puede pegarle a otros temas, pero espero que esto le ayudará a empezar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top