繁体   English   中英

SQL连接与对引用的引用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM