简体   繁体   English

如何在SQL Server 2014中的单个表中的外键内联接多个外键

[英]How to join a multiple foreign key within the foreign key in a single table in SQL Server 2014

I have Waybill Table in which the joborderID is foreign key of Joborder Table in joborder Table there is FleetTypeID which is the ForeignKey of FleetTypeID and in FleetType Table there are two more foreign key ItemsID and FleetTypeItemsID 我有运单表,其中joborderID是Joborder表中Joborder表的外键,还有FleetTypeID,这是FleetTypeID的外键,在FleetType表中,还有两个外键ItemsID和FleetTypeItemsID

The problem is I want to retrieve joborder_table data in waybill_table but the foreign keys in joborder_table are not joining 问题是我想在waybill_table中检索joborder_table数据,但joborder_table中的外键未加入

Select DISTINCT FleetTypeItem as Fleet_Items, 
                ItemsName as Items
from  ItemsTbl, FleetTypeItemTbl
inner join FleetTypeTbl on FleetTypeItemTbl.FleetTypeItemID=FleetTypeTbl.FleetTypeItemID and
                           ItemsTbl.ItemsID=FleetTypeTbl.ItemsID

This is not running please assist me this is my project 这没有运行,请帮助我这是我的项目

You need to separate out your joins. 您需要分离出联接。 Also, if those columns are present in multiple tables, you have to reference the table in your select so it knows where to look: 另外,如果这些列存在于多个表中,则必须在选择的表中引用该表,以便知道在哪里查找:

SELECT DISTINCT FleetTypeItemTbl.FleetTypeItem as Fleet_Items, ItemsTbl.ItemsName as Items 
FROM FleetTypeItemTbl
INNER JOIN FleetTypeTbl
ON FleetTypeItemTbl.FleetTypeItemID = FleetTypeTbl.FleetTypeItemID
INNER JOIN ItemsTbl
ON ItemsTbl.ItemsID = FleetTypeTbl.ItemsID

So, you SELECT something FROM else, INNER JOIN that ON something, then INNER JOIN that onto something else. 所以,你SELECT的东西FROM别的, INNER JOINON的东西,然后INNER JOIN是到别的东西。

So, rather than say FROM 1, 2, and 3 ON these joins , say FROM 1, JOIN 1 = 2, JOIN 2 = 3 . 因此,与其说FROM 1, 2, and 3 ON these joins ,不如说FROM 1, JOIN 1 = 2, JOIN 2 = 3 ...if that makes sense. ...如果有道理。

It might also make things more readable to alias your tables like this: 这样也可以使表别名更容易理解:

SELECT DISTINCT FTI.FleetTypeItem as Fleet_Items, I.ItemsName as Items 
FROM FleetTypeItemTbl FTI
INNER JOIN FleetTypeTbl FT
ON FTI.FleetTypeItemID = FT.FleetTypeItemID
INNER JOIN ItemsTbl I
ON I.ItemsID = FT.ItemsID

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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