2014-12-30 25 views
0

我有三個表格公司,用戶,地址。

公司有三個字段如何從外鍵表中訪問數據

  • comp_id(PK)
  • COMP_NAME
  • USER_ID(FK)
  • to_address_id(FK)
  • from_address_id(FK)

    地址有字段:

  • ADDRESS_ID(PK)
  • 城市
  • 狀態

    用戶有場 USER_ID(PK),USER_NAME

    to_address_id和from_address_id都是外鍵它引用同一個表中的地址和地圖address_id

    現在的重點是如何從表中檢索from_address,我能夠從這個地方檢索to_address紅黴素。

    在這裏,我可以得到無論是從出貨表to_address_id和from_address_id但如何讓這兩個基礎上,ADDRESS_ID在同一個查詢地址:

SELECT s.comp_name,u.user_name,a.city 
      FROM 
     company s 
    JOIN 
     User u 
    JOIN 
     Address a 
    ON 
     s.user_id = u.user_id 
     AND s.to_address_id = a.address_id 
    WHERE 
     s.user_id = 1001; 

回答

2

解決方案 - 你需要加入兩次,每次每FK你感興趣的:

SELECT s.comp_name, u.user_name, a_from.city AS city_from, a_to.city AS city_to 
FROM company s 
LEFT JOIN User u ON s.user_id = u.user_id 
LEFT JOIN Address a_from ON s.from_address_id = a_from.address_id 
LEFT JOIN Address a_to ON s.to_address_id = a_to.address_id 
WHERE s.user_id = 1001; 
0

你必須首先查看在查詢中使用JOIN

試試這個:

SELECT s.comp_name,u.user_name,a.city 
FROM company s 
JOIN User u ON s.user_id = u.user_id 
JOIN Address a ON s.to_address_id = a.address_id 
WHERE s.user_id = 1001; 
1

嘗試以下操作:

SELECT s.comp_name 
     ,u.user_name 
     ,a1.city 
     ,a2.city 
FROM company s 
JOIN User u ON s.user_id = u.user_id 
JOIN Address a1 ON s.to_address_id = a1.address_id 
JOIN Address a2 ON s.from_address_id = a2.address_id 
WHERE s.user_id = 1001;