我是编写SQL查询的新手,这是针对mySQL数据库的。
我有一个名为PatientVisit(PV)的表,它与BillMaster(BM)一对一。每次访问都有一个账单,然后与BillDetail(BD)一对一。当我从PatientVisit(PV)列出访问详细信息时,我需要打印一个字符串,其中包含与该访问相关联的“ServiceName”列。
因此,例如,PatientVisit.ID号码'1'具有相应的BillMaster.Bill No'1',其在BillDetail'咨询'和'穿衣'中有2个条目。
当我打印访问1的详细信息时,我需要'咨询,换装'作为“服务名称”列的一个字符串值。
如果我有一对一的话,那么查询就会很简单,如下所示:
select PV.ID, BM.BillNo, BD.ServiceName
FROM PatientVisits PV INNER JOIN BillMaster BM ON BM.VisitID = PV.ID
INNER JOIN BillDetail BD ON BD.BillNo = BM.BillNo
WHERE ....
但是,由于ServiceName列是一对多,所以如何编写此查询?
谢谢, 泽。
答案 0 :(得分:0)
试试这个
select PV.ID, BM.BillNo,
GROUP_CONCAT(BD.ServiceName)
FROM PatientVisits PV INNER JOIN BillMaster BM ON BM.VisitID = PV.ID
INNER JOIN BillDetail BD ON BD.BillNo = BM.BillNo
WHERE ..
GROUP BY PV.ID,BM.BillNo
...