我还是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,每列有多个点,我不知道它用于什么。有没有人有任何想法?
答案 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