mysql表有两个来自另一个表的外键

时间:2014-03-04 10:46:14

标签: php mysql sql

我有两张桌子。


  1. 发票
  2. 用户

  3. 在用户表中我有

    user_id
    user_name
    user_email    
    user_address
    

    在发票表中我有

    invoice_id
    invoice_to_user_id
    invoice_by_user_id
    invoice_date
    

    在发票表中,我有两个来自用户表的外键 invoice_to_user_id
    2. invoice_by_user_id

    现在我想进行单一查询,获取两个外键的用户信息.g。,
    1. invoice_to_user_name
    2. invoice_to_user_email
    3. invoice_to_user_address
    4. invoice_by_user_name
    5. invoice_by_user_email
    6. invoice_by_user_address

    提前致谢。

2 个答案:

答案 0 :(得分:1)

SELECT t.user_name    AS invoice_to_user_name,
       t.user_email   AS invoice_to_user_email,
       t.user_address AS invoice_to_user_address,
       b.user_name    AS invoice_by_user_name,
       b.user_email   AS invoice_by_user_email,
       b.user_address AS invoice_by_user_address
FROM invoice i
LEFT JOIN user t ON t.user_id = i.invoice_to_user_id
LEFT JOIN user b ON b.user_id = i.invoice_by_user_id

答案 1 :(得分:0)

将发票表与用户表连接两次,一次在invoice_to_user_id上,然后再次在invoice_by_user_id上,例如

SELECT
INV.invoice_id,
US1.user_name AS invoice_to_user_name,
US1.user_email AS invoice_to_user_email,
US1.user_address AS invoice_to_user_address,
US2.user_name AS invoice_by_user_name,
US2.user_email AS invoice_by_user_email,
US2.user_address AS invoice_by_user_address
FROM
[invoice] INV
INNER JOIN [user] US1 ON INV.invoice_to_user_id = US1.user_id
INNER JOIN [user] US2 ON INV.invoice_by_user_id = US2.user_id