SQL连接引用引用

时间:2015-12-15 19:22:17

标签: sql join reference

我还是SQL新手。在我遇到这个问题之前,我的项目一直在取得很好的进展。我试图在网上搜索这类问题,但我找不到任何具体的内容,或者我在搜索中没有使用正确的关键字。

我有三个与此问题相关的表。显然我没有任何"描述表"命令能够复制输出。我对连接的其他查询正在按预期工作。

表1 - "网站"

ID int auto-increment key, site_code short text, site_name short text, more but not relevant.

表2 - "集线器"

ID int auto-increment key, HUB int (lookup from Sites.ID), more but not relevant.

表3 - " DialPlan"

ID int auto-increment key, site int (lookup from Sites.ID), HUB int (lookup from Hubs.HUB), more but not relevant.

查看" DialPlan"的查询时我需要看到" DialPlan.site"被" Sites.site_code"取代对于那个特定的int。我需要看到" DialPlan.HUB"被" Sites.site_code"取代对于那个特定的int。没有连接的表输出示例:

DialPlan:28,29,2,203最后一个数字不相关。 Sites.ID = 29,Sites.site_name = BENN。 Hubs.ID = 2,Hubs.HUB = 27,Sites.ID = 27,Sites.site_name = BRAG。因此,我在使用连接时需要看到的输出是:28,BENN,BRAG,203。我没有得到,我得到:28,BENN,BENN,203。

我的搜索查询是:

select 
    Sites.site_code, Sites.site_name, Sites.site_code as Hubs.HUB, 
    DialPlan.OC
from 
    DialPlan
left join 
    Sites on DialPlan.site = Sites.ID
left join
    Hubs on DialPlan.HUB = Hubs.ID
left join
    Hubs on Hubs.HUB = Sites.ID;

我尝试使用" AS"更改字段3甚至尝试了#34; ="和其他几件事。如果我尝试将字段3作为" Sites.site_code"然后输出与第一个" Sites.site_code"相同。抬头。我不知道该怎么办。我现在已经尝试了很多东西,我甚至不确定我的尝试。我看到一个thread,每列有多个点,我不知道它用于什么。有没有人有任何想法?

2 个答案:

答案 0 :(得分:1)

好的,我找到了答案,它被称为内部查询。实际上有两个内部查询。我发布这个,以便其他人可以从中受益。从同一个表中的两个字段引用第一个表的问题是SQL无法确定第二个调用意味着新搜索。因此,您必须执行内部查询来解决此问题。这是代码。作为Access管理员,我总是能够轻松获得这种结果,但我支持SQL的功能曲线。这是工作代码示例。

SELECT Sites.site_code, Sites.site_name,
    ( SELECT site_code FROM Sites WHERE ID =
        ( SELECT HUB FROM Hubs WHERE DialPlan.HUB = Hubs.ID )
    ),
DialPlan.OC
FROM DialPlan
LEFT JOIN Sites
ON DialPlan.site = Sites.ID;

输出是我正在寻找的,“BENN Benning BRAG 203”。我希望这有助于某人。

答案 1 :(得分:0)

当您使用AS子句时,您只是为该列提供表的标题。它不会填写别名中的数据来代替您要别名的数据。

如果要列出Hubs.hub的数据,您应该选择SELECT Hubs.hub,然后使用AS mytitle为其指定所需的标题。

此外,您还需要最后一次加入,因为您的表已经加入。

此外,describe命令是DESC,它应该工作... DESC站点

select 
 Sites.site_code, Sites.site_name, Hubs.HUB as Site, DialPlan.OC
from 
  DialPlan
left join 
  Sites on DialPlan.site = Sites.ID
left join
  Hubs on DialPlan.HUB = Hubs.ID