代码之家  ›  专栏  ›  技术社区  ›  Daine MacTavish

显示来自两个外键的列数据

  •  1
  • Daine MacTavish  · 技术社区  · 8 年前

    我很困惑,想知道如何显示基于两个不同外键的具有两列(城市名称)的表。在本例中,我想显示一个制造商城市和一个仓库城市,而这两个城市都需要访问CityID。

    ERD

    这就是我到目前为止所说的:

    SELECT s.StkName, c.CityName AS "Manufacturer City", c.CityName AS 
    "Warehouse City", s.SellingPrice FROM
    STOCKITEM7364 s
    LEFT OUTER JOIN MANUFACTURER7364 m ON m.ManID = s.ManID
    LEFT OUTER JOIN CITY7364 c ON c.CityID = m.CityID
    LEFT OUTER JOIN WAREHOUSE7364 w ON w.WHID = s.WHID AND w.CityID = c.CityID
    WHERE s.StkName LIKE '%n' OR s.StkName LIKE '%e' OR s.StkName LIKE '%o' OR 
    s.StkName LIKE '%p' OR s.StkName LIKE '%s';
    

    我非常感谢您对sql的任何帮助或解释

    1 回复  |  直到 8 年前
        1
  •  0
  •   Nick SamSmith1986    8 年前

    您需要两次加入城市名称表,一次用于制造商,一次用于仓库。尝试以下操作:

    SELECT s.StkName, cm.CityName AS "Manufacturer City", cw.CityName AS 
    "Warehouse City", s.SellingPrice FROM
    STOCKITEM7364 s
    LEFT JOIN MANUFACTURER7364 m ON m.ManID = s.ManID
    LEFT JOIN CITY7364 cm ON c.CityID = m.CityID
    LEFT JOIN WAREHOUSE7364 w ON w.WHID = s.WHID
    LEFT JOIN CITY7364 cw ON c.CityID = w.CityID
    WHERE s.StkName LIKE '%n' OR s.StkName LIKE '%e' OR s.StkName LIKE '%o' OR 
    s.StkName LIKE '%p' OR s.StkName LIKE '%s';
    

    请注意 OUTER 中不需要 LEFT JOIN