我有一个问题,我需要从三个不同的表中选择数据,并以指定的方式格式化。我尝试过JOINS,UNIONS ......以及各种select语句,但无法按照我想要的方式获取格式。
表格如下:
表1(面积表)
ID |Area
----|-----
1 | England
2 | Wales
3 | Scotland
4 | Ireland
表2(站点表)
ID |AreaID |Site
--- |--------|-----
1 | 1 | London
2 | 1 | Bath
3 | 2 | Cardiff
4 | 3 | Edinburgh
表3(位置表)
ID |AreaID |TownID | Location
--- |---------|-----------|-----
1 | 1 | 1 | Sussex
2 | 1 | 1 | Mitcham
3 | 2 | 2 | Canton
现在,我需要从所有三个表中选择数据以产生以下内容:
AreaID |AreaName |SiteID | SiteName | LocationID | LocationName
------- |-----------|-----------|---------- -|--------------|----------
1 | England | 1 | London | 1 | Sussex
1 | England | 1 | London | 2 | Mitcham
2 | Wales | 3 | Cardiff | 3 | Canton
3 | Scotland | 3 | Edinburgh | NULL | NULL
4 | Ireland | NULL | NULL | NULL | NULL
因此,基本上,位置输入需要站点实体,站点实体需要区域。但是区域不需要站点,站点不需要位置。
希望这是有道理的。
如果有人能提供帮助,我将不胜感激。
答案 0 :(得分:5)
这似乎是一个直接的LEFT JOIN:
SELECT a.ID AS AreaID, a.Area AS AreaName,
s.ID AS SiteID, s.Site AS SiteName,
l.ID AS LocationID, l.Location AS LocationName
FROM Area a
LEFT JOIN Site s ON s.AreaID = a.ID
LEFT JOIN Location l ON l.AreaID = a.ID
希望这有帮助