定義された 2 つのテーブルがあります。
表 1: 患者
| patient_id | patient_name | medications |
------------------------------------------------------
| 1 | Jon Doe | 1 |
| 2 | Jane Doe | 2,3 |
表 2: 投薬
| medication_id | medication_name |
--------------------------------------
| 1 | Med 1 |
| 2 | Med 2 |
| 3 | Med 3 |
次のSQLでスキーマとデータを作成しました。
create table patient (patient_id INT, patient_name TEXT, medications TEXT);
create table medication (medication_id INT, medication_name TEXT);
INSERT INTO patient VALUES (1, 'Jon Doe', '1');
INSERT INTO patient VALUES (2, 'Jane Doe', '2,3');
INSERT INTO medication VALUES (1, 'Med 1');
INSERT INTO medication VALUES (2, 'Med 2');
INSERT INTO medication VALUES (3, 'Med 3');
列の 1 つが薬のコンマ区切りリストである患者をリストするクエリを作成しようとしています。次のクエリを試しました。
SELECT
patient_id,
patient_name,
medications,
(SELECT group_concat(medication_name) FROM medication T2 WHERE T2.medication_id in (T1.medications)) as med_names
FROM
patient T1
問題は、2 番目の患者 (Jane Doe) の場合、最初の薬しか受けていないことです。結果:
| patient_id | patient_name | medications | med_names |
------------------------------------------------------------------------
| 1 | Jon Doe | 1 | Med 1 |
| 2 | Jane Doe | 2,3 | Med 2 |
望ましい結果は次のとおりです。
| patient_id | patient_name | medications | med_names |
--------------------------------------------------------------------------
| 1 | Jon Doe | 1 | Med 1 |
| 2 | Jane Doe | 2,3 | Med 2, Med 3 |
これは可能ですか?どんな助けでも大歓迎です。ありがとう。