加入 3 个具有不同 FK 的表

Join 3 tables with different FKs

我正在尝试使用一些 WHERE 子句在 SELECT 查询中将 3 个表连接在一起。 Table 1 链接到 Table 2,Table 2 链接到 Table 3.

表格如下:

Author
PK: Author_ID
FK: Location_ID
Author_First_Name

Location
PK: Location_ID
City

Articles
PK: Article_ID
FK: Author_ID
Article_Name

到目前为止,我已经整理了这个查询,但我无法确定如何加入第二个外键 'Location_ID'

SELECT 
    Articles.Article_Name 
FROM 
    Articles
        INNER JOIN Author
            ON Articles.Author_ID
        INNER JOIN Location
            ON 
WHERE Author.Author_First_Name='Sam'
AND Location.City<>'Detroit'

正确的语法是这样的:

SELECT a.Article_Name
FROM Articles a INNER JOIN
     Author au 
     ON a.Author_ID = au.Author_ID INNER JOIN
     Location l
     ON l.Location_ID = au.Location_Id
WHERE au.First_Name = 'Sam' AND l.City <> 'Detroit';

请注意,使用 table 别名使查询更易于编写和阅读。此外,您需要连接 ON 子句的两个 table 的条件。

您忘记比较 table 个字段

SELECT * FROM articles ar
LEFT JOIN author a ON ar.author_id = a.author_id
LEFT JOIN location l ON a.location_id = l.location_id
WHERE a.author_first_name = 'Sam' AND l.city <> 'Detroit'