我有两个定义的表:
表 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');
我正在尝试编写一个查询,该查询将列出患者,其中一列是逗号分隔的药物列表。我尝试了以下查询:
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
问题是对于第二个病人(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 |
这可能吗?任何帮助,将不胜感激。谢谢。