[英]SQL join with references to references
我还是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”的查询时,我需要查看该特定int的“ DialPlan.site”被“ Sites.site_code”替换。 我需要查看该特定int的“ DialPlan.HUB”被“ Sites.site_code”替换。 不带联接的表输出示例:
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,甚至尝试了“ =”和其他一些事情。 如果我尝试将字段3设置为“ Sites.site_code”,则输出与第一个“ Sites.site_code”查找相同。 我不确定如何进行。 现在我已经尝试了很多东西,以至于我什至不确定自己到底尝试了什么。 我看到一个线程 ,其中每列有多个点,我不知道这是用来做什么的。 有人有什么想法吗?
好的,我找到了答案,这被称为内部查询。 实际上,有两个内部查询。 我发布此消息是为了让其他人可以从中受益。 从同一表上的两个字段引用第一个表的问题是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”。 我希望这可以帮助别人。
使用AS子句时,您只是在为该列提供表标题。 它不会替代别名中的数据,而是填充别名中的数据。
如果要列出Hubs.hub的数据,则应选择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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.