4

以下のクエリがありますが、これは機能するはずです。しかし、MySQL から「サブクエリが複数の行を返します」というエラー メッセージが表示されます。

select e.episode_pk,
(select group_concat(d.fulldescription separator ', ')
    from episode_rhythm er join diagnosis d on er.diagnosis_fk = d.diagnosis_pk 
    WHERE er.episode_fk = e.episode_pk group by d.fulldescription) as rhythmDesc 
from episode e  
WHERE e.patientid_fk='89976' 

このクエリで group_concat を使用する全体的な目的は、「エピソード」ごとに 1 つの行のみを返すことです。

外側の選択は複数の行を返します。

内部選択は、単一のエピソード テーブルの主キーに対して実行されると、予想されるように単一の行を返します。

select group_concat(d.fulldescription separator ', ')
        from episode_rhythm er join diagnosis d on er.diagnosis_fk = d.diagnosis_pk 
        WHERE er.episode_fk = 234776 group by d.fulldescription

group_concat を使用しない内部選択は、単一のエピソード テーブルの主キーに対して実行されると、複数の行を返す場合があります。

select d.fulldescription
        from episode_rhythm er join diagnosis d on er.diagnosis_fk = d.diagnosis_pk 
        WHERE er.episode_fk = 234776

これを期待どおりに機能させるには、どうすればよいですか?

4

1 に答える 1

3

SELECT 内のサブクエリは少し疑わしいです。

あなたが探しているのは次のとおりだと思います:

SELECT
    e.episode_pk,
    GROUP_CONCAT(d.fulldescription separator ', ')
FROM episode_rhythm er
JOIN diagnosis d ON er.diagnosis_fk = d.diagnosis_pk
JOIN episode e ON er.episode_fk = e.episode_pk
WHERE e.patientid_fk='89976' 
GROUP BY e.episode_pk
于 2012-06-20T13:32:14.760 に答える