我有一个简单的关系数据库设置,类似于下面的例子
[Customer] --< [CGLink] >-- [Order]
Person:
Alias Name(PK)
A Bill
B Ben
C Bob
D Jim
E John
CGLink:
ID(PK) Alias Type
1 A W
2 A X
3 B W
4 B X
5 B Y
6 B Z
7 C Y
8 E Z
Group:
Type(PK) Group
W Double-U
X Eks
Y Whai
Z Zed
我想返回一组像
这样的结果Alias Name Group
A Bill Double-U
A Bill Eks
B Ben Double-U
B Ben Eks
B Ben Whai
B Ben Zed
C Bob Whai
D Jim
E John Zed
正如您所看到的,Jim在链接表中没有相关数据,我想避免放置一行虚拟数据,我可以将所有人链接到没有组的人,以便让我返回数据
我正在使用的查询是
SELECT p.Alias, p.Name, g.Group
FROM Person AS p, Group AS s, CGLink AS l
WHERE (p.Alias=l.Alias
AND l.Type=s.Type)
ORDER BY p.Alias, p.Name;
返回
Alias Name Group
A Bill Double-U
A Bill Eks
B Ben Double-U
B Ben Eks
B Ben Whai
B Ben Zed
C Bob Whai
E John Zed
你可以看到,因为他没有相关的小组而错过了Jim。 我怎样才能获得我真正想要的结果?
干杯
答案 0 :(得分:2)
答案 1 :(得分:1)
尝试使用OUTER join
SELECT p.Alias, p.Name, g.Group
FROM Person AS p
LEFT OUTER JOIN Group AS s ON p.Alias=l.Alias
LEFT OUTER JOIN CGLink AS l ON l.Type=s.Type
ORDER BY p.Alias, p.Name;