我对SQL比较陌生,能够编写一些带有JOIN,WHERE的简单语句。我也有一些SSRS 2008的经验。但是我很难根据一个表生成两个(唯一的)名称列表
我正在尝试制作一份包含工作人员的报告,其中列出了他们照顾的客户。所有名称(无论是员工还是客户)都保存在Person表中。我可以运行一个简单的查询列出所有工作人员或客户,但我无法列出这两个。
要生成客户列表,我的查询就是
SELECT p.Forenames, p.Surname
FROM Person AS p
INNER JOIN Client AS c ON p.ID = c.ID
并生成人员列表,我的查询将如上所述,但INNER JOIN如下:
INNER JOIN StaffMember AS s ON p.ID = s.ID
工作人员与客户之间的所有不同链接的链接如下(供参考)。
Client.ID = ClientRecordForm.Client_ID
Person.ID = ClientRecordForm.AssignedSupportWorker_ID
Person.ID = StaffMember.ID
StaffMember.ID = ClientRecordForm.AssignedSupportWorker_ID
为了帮助说明这一点,我可以运行一个查询来列出已分配给客户的员工。
SELECT DISTINCT p.Forenames, p.Surname
FROM Person AS p
INNER JOIN ClientRecordForm AS crf ON p.ID = crf.AssignedSupportWorker_ID
这最后一个查询基本上是我想要的,但我正在努力添加客户端名称,因为我似乎无法区分客户端,因为我已经在使用Person表
答案 0 :(得分:1)
如果您想展示人并且能够区分客户,请尝试自我加入。
SELECT DISTINCT p.Forenames, p.Surname
FROM Person AS p
INNER JOIN ClientRecordForm AS crf ON p.ID = crf.AssignedSupportWorker_ID
inner join person as personClients on crf.clientid = personClients.id
如您所见,您可以加入另一个人表来获取StaffMember
,您可以从personClients
加入Client
以获取信息......等等。
答案 1 :(得分:0)
这就是你想要的吗?
SELECT DISTINCT p.Forenames, p.Surname
FROM Person AS p
INNER JOIN ClientRecordForm AS crf
ON p.ID = crf.AssignedSupportWorker_ID
INNER JOIN Client AS c
ON c.ID = crf.Client_ID