内部加入3个表

eqi*_*qiz 0 sql sql-server sql-server-2008

我有3个表格,我想知道如果有这种类型的设置我怎样才能进行三重连接?

First Table: LOCATIONS_TABLE
locationID
websiteID
locationCity
locationState
locationCountry
locationURL

Second Table: PREF_TABLE
pref_ID
Pref_LocationID
Pref_WebsiteID
Pref_SavedTitle

Third Table: WEBSITECATEGORY_TABLE
wbcatID
websiteID
WBLinkCategoryParentID
WBLinkTitle
WBLinkURL
Run Code Online (Sandbox Code Playgroud)

第二个表是用户具有商店首选项的地方,其中Pref_SavedTitle用于他们保存的位置以供稍后参考.

我只有双内连接的当前SQL语句是......

SELECT 
LOCATIONS_TABLE.LocationWebsiteID, 
LOCATIONS_TABLE.locationCity, 
LOCATIONS_TABLE.locationState, 
LOCATIONS_TABLE.locationCountry, 
LOCATIONS_TABLE.locationURL, 
PREF_TABLE.Pref_SavedTitle 
FROM PREF_TABLE INNER JOIN LOCATIONS_TABLE 
ON PREF_TABLE.Pref_LocationID = LOCATIONS_TABLE.LocationID 
WHERE PREF_TABLE.Pref_SavedTitle = 'AlabamaPREF'
Run Code Online (Sandbox Code Playgroud)

这将返回...的样本数据

LocationWebsiteID = 2 
locationCity = Mobile 
locationState = Alabama 
locationCountry = United States
locationURL = alabama.bmv.org
Pref_SavedTitle - AlabamaPREF 
Run Code Online (Sandbox Code Playgroud)

第3张表有......的样本数据

wbcatID = 1
websiteID = 2
WBLinkCategoryParentID = 0
WBLinkTitle = Alabama Resources
WBLinkURL = /alabama-resources
Run Code Online (Sandbox Code Playgroud)

这正是它需要做的事情,它返回了所有LOCATION_TABLE项,它们等于先前存储在PREF_TABLE中的LocationID.

但是我有一个第三个表,我需要添加到上面列出的这个等式(这是第三个表).我需要能够以某种方式链接网站ID上的第三个表,以便它知道WBLinkTitle和WBLinkURL与该特定网站ID相关联

在最终输出......我需要能够为列提取结果......

LOCATIONS_TABLE.websiteID, 
LOCATIONS_TABLE.locationURL, 
WEBSITECATEGORY_TABLE.WBLinkTitle, 
WEBSITECATEGORY_TABLE.WBLinkURL
Run Code Online (Sandbox Code Playgroud)

基于我的样本数据将...

websiteID = 2
locationURL = alabama.dmv.org
WBLinkTitle = Alabama Resources
WBLinkURL = /alabama-resources
Run Code Online (Sandbox Code Playgroud)

SQLFIDDLE示例

小智 5

更新v-1

我根据你的评论更新了答案(现在第3个表是内部连接的,PREF_TABLE并且第一个连接添加了附加条件:AND PREF_TABLE.Pref_WebsiteID = LOCATIONS_TABLE.LocationWebsiteID防止所有位置加载):

SELECT 
    LOCATIONS_TABLE.LocationWebsiteID, 
    LOCATIONS_TABLE.locationCity, 
    LOCATIONS_TABLE.locationState, 
    LOCATIONS_TABLE.locationCountry, 
    LOCATIONS_TABLE.locationURL, 
    PREF_TABLE.Pref_SavedTitle,
    WEBSITECATEGORY_TABLE.WBLinkTitle,
    WEBSITECATEGORY_TABLE.WBLinkURL
FROM 
    PREF_TABLE 
    INNER JOIN LOCATIONS_TABLE 
        ON PREF_TABLE.Pref_LocationID = LOCATIONS_TABLE.LocationID
           AND PREF_TABLE.Pref_WebsiteID = LOCATIONS_TABLE.LocationWebsiteID
    INNER JOIN WEBSITECATEGORY_TABLE 
        ON WEBSITECATEGORY_TABLE.websiteID = PREF_TABLE.Pref_WebsiteID 
WHERE 
    PREF_TABLE.Pref_SavedTitle = 'AlabamaPREF'
Run Code Online (Sandbox Code Playgroud)