簡體   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