我有一个带有三个表的SQL Server数据库:Gang,GangMember和Neighborhood。这些表的结构是这样的:SQL - 使用左连接混合内连接
Neighborhood
------------
ID (non-null)
Name (non-null)
Gang
----
ID (non-null)
Name (non-null)
NeighborhoodID (nullable)
GangMember
----------
ID (non-null)
GangID (non-null)
Name (non-null),
Position (nullable)
我需要得到团伙成员所属的(是的,他们可以属于多个)所有帮派。如果有邻居,我也需要返回。我想我的结果设置为以下形式:gang.name,neighborhood.name,member.position
到目前为止,我在这里得到:
SELECT
g.[Name],
'' as 'Neighborhood' /* This what I don't know how to do */
m.[Position]
FROM
[Gang] g,
[GangMember] m
WHERE
m.[GangID]=g.[ID]
因为帮派可能没有邻居,我不知道如何完成这个查询。有人可以帮我吗?谢谢!
我觉得你有你的模型的一些更新异常等问题。我不认为你已经正确定义了一个帮派成员,例如“帮派成员属于(是的,他们可以属于多个)”似乎是矛盾的。也许你的意思是说,同一个人*可以是同一个帮派的成员?如果是这样,大概他们可以在不同的帮派中以不同的名字(或相同的名字)知道他们自己的保护。了解帮派之间的竞争传统和他们的反建立性质,我很难想象哪个代理机构会是团伙成员ID的可信赖来源! – onedaywhen
澄清:我认为你的'GangMember'表需要分成两个表格:一个用于模拟人(可能有诸如法定名称,指纹,DNA等标识符),另一个用于建模人和她的帮派(难以想象任何标识符,而不是'已知'的名字)。 – onedaywhen