2010-05-16 57 views
0

是否有可能创建一个SQL语句执行以下操作:SQL字符串ID语句来替换

表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 
+2

查询然后你就可以得到理想的效果,请在这里发表完整的问题,不使用引擎收录了点。 – Tomalak 2010-05-16 09:05:49

+1

SO的全部意义在于成为编程问题的参考来源,而不仅仅是现在回答您的具体问题。如果该网站消失或偶尔清理某些内容,则将问题的一半放在另一个网站上是毫无用处的。请确保您将来在此发布整个问题。这次我把这些东西移到了这里。 – paxdiablo 2010-05-16 09:18:54

回答

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) 
+0

正确,优化的数据库将包含Col Shrapnel所述的表结构。 不幸的是,我正在使用的PHP代码没有被写入来接受优化的数据库结构。所以,我的问题依然存在。 是否有某种SQL查询我可以运行重新创建表3,其中副作用由|是表2中的副作用ID?或者某种PHP来生成所需的表格? – Casey 2010-05-16 09:51:30

+0

@用户是。编写一段PHP代码来运行一些SQL查询。如果您不知道如何从PHP运行SQL查询,则必须先使用PHP类。 – 2010-05-16 09:58:00