是否可以创建一个sql语句来执行以下操作:
表1列出了所有药物名称,表2包含了所有副作用。
表3按ID分列所有药物名称,并以|
分隔所有副作用。
我是否可以运行某种SQL查询来重新创建表3,其中由|
分隔的副作用是表2中的副作用ID?
Table1
---------------------
id | drug_name
---------------------
1 | aspirin
2 | zoloft
3 | codine
Table2
---------------------
id | side_effects
---------------------
1 | rash
2 | hearing loss
3 | the plague
Table3
---------------------
id | drugs2sidefx
---------------------
1 | rash | hearing loss
2 |
3 | the plague | hearing loss
答案 0 :(得分:1)
这种方式你不需要table3。
应该是
drugs2se
---------------------
d_id | se_id
---------------------
1 | 1
1 | 2
3 | 2
3 | 3
然后,你可以通过像这样的查询获得所需的结果
SELECT d.name, group_concat(se.name) as effects
FROM drugs d, drugs2se dse, side_effects se
WHERE d.id=d_id AND se_id=se.id
GROUP BY (d.id)