Frage

ich geschrieben am Freitag ( sql Mehrfachzählschlüsseldaten ) und hatte ein paar Antworten.

Nachdem versucht, sie heute zu implementieren, halte ich den gleichen Fehler.

My SQL-Code ist jetzt:

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

Ich erhalte die Fehlermeldung:

  

ORA-00904:. "MBDDX_TREATMENT_GROUP" "STUDY_ID": ungültige Kennung

Ist es, weil es außerhalb der inneren Verknüpfung Klammer ist, das heißt der Rahmen aus? Ich bin sehr neu in SQL und kann nicht verstehen, warum es Arbeit gewohnt. Ich kann es bekommen arbeitet mit ausgewählten Unterabfragen (ohne beitritt), aber ich mag auch mit Verknüpfungen zu arbeiten kann.

Wenn es darauf ankommt any Ich Toad for Oracle verwenden.

Danke.

War es hilfreich?

Lösung

Da Sie mit einer Abfrage verbinden. Geben Sie einen Namen für diese Abfrage und beziehen sich auf das so:

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

Andere Tipps

Für eine Sache, eine Unterabfrage muss einen Alias ??haben. Ändern:

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

Die zweite Sache ist, dass Sie alle Spalten, die Sie planen, umfassen müssen zu verwenden. Im Moment ist die Unterabfrage wählt nur einen Zähler, aber die ON Klausel Referenzen STUDY_ID. Sie können das Problem beheben, indem STUDY_ID in der Unterabfrage Auswahlliste einschließlich, wie:

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

Nun danach, könnten Sie andere Fragen getroffen, aber ich hoffe, dies wird Ihnen den Start.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top