2015-06-09 61 views
1

我想在MYSQL中使用INNER JOIN創建一個查詢,我無法讓它工作。MYSQL內部聯接從ID獲取多個名稱

這裏是什麼,我試圖做一個例子:

請注意,這些都不是我的工作表。我做了兩個簡單的表格來展示我想要達到的目標。

下面是表的索引關係的圖像: http://oi62.tinypic.com/2ez5k3p.jpg

我想「發件人」「接收器」名tb_people並將它們組合爲這樣:

表示例

|發件人|接收器|

| JOHN | MARY |

這裏的一個查詢我嘗試和失敗

SELECT 
    tb_people.p_name AS sender, 
    tb_people.p_name AS receiver 
FROM 
    tb_people 
INNER JOIN 
    tb_mail 
ON (tb_people.id = tb_mail.sender_id) 
AND (tb_people.id = tb_mail.receiver_id) 

能否請您告訴我關於如何解決這個查詢?

預先感謝您。

回答

3

需要兩個join S和表別名:

SELECT s.p_name AS sender, r.p_name AS receiver 
FROM tb_mail m INNER JOIN 
    tb_people r 
    ON r.id = m.sender_id INNER JOIN 
    tb_people s 
    ON s.id = m.receiver_id; 

如果你認爲你的on條件:

ON (tb_people.id = tb_mail.sender_id) AND 
    (tb_people.id = tb_mail.reciever_id) 

你會意識到,條件是唯一真正當發送者和接收者是同一個人。

+0

非常感謝。它像一個魅力。這一直在困擾着我整天,現在它工作。 是的,就像你用'AND'說的那樣,我強迫查詢使共享一個ID的條目。 – Theoden

0

一個地方更容易!看看它:

SELECT 
    tb_people.p_name AS sender, 
    tb_people.p_name AS receiver 
FROM 
    tb_people 
WHERE tb_people.id IN (
    SELECT tb_mail.sender_id 
    FROM tb_mail 
) 

這應該從每一個郵件,存儲在數據庫中的發送者和接收者。