2

我有 2 张桌子

表名Dist

NAME|Phone|ID 
----------------
Oakley|555-555|1
Maui|666-666|2
lux|777-7777|3

表名Patientacct

Name|prescription|id|orderfrom
-------------------------------
bob|20-20|1|oakley
billy|15-20|2|Oakley, Maui
kim|20-20|3|Lux

我正在寻找像这样的显示器

奥克利
--------------------
鲍勃
比利
毛伊岛
------------------
比利
勒克斯
--------------
金

到目前为止的试验

SELECT *
FROM `dist`
JOIN `patientacct` ON patientacct.dist LIKE CONCAT('%', `dist`.name ,'%')
GROUP BY `dist`.name

这仅显示 1 个 dist

如果我通过示例删除该组:

SELECT *
FROM `dist`
JOIN `patientacct` ON patientacct.dist LIKE CONCAT('%', `dist`.name ,'%')

我得到了两次记录,所以我需要的是介于两者之间的某个地方。我对加入非常陌生,所以在解释时很容易。

4

2 回答 2

0

首先,请使表结构关系。在每个表中都有一个主 auto_increment 值,并使用从 Dlist 外键到 Patientacct 的主键。这样,一个简单的连接将获取您想要的记录。

关于显示,你的意思是你不想记录两次。由于您使用的是连接,因此您将获得两个 Oakley 与患者 Bob 和 Billy 的记录。这就是您想要的,并且在关系表中也可以通过简单的连接来实现。

于 2012-06-25T10:41:46.350 回答
0

您必须更改表结构,并且需要添加具有以下值的关系表:

订单:

dist_id, patientacct_id PRIMARY_KEY(dist_id, patientacct_id)
于 2012-06-25T05:38:10.223 回答