2016-09-04 189 views
-1

我有兩個表用戶和聯動。我正在創建一個用戶與另一個用戶之間的鏈接。意味着用戶A將被鏈接到用戶B,反之亦然。加入兩個表查詢

現在我想獲取特定輸入user_id的鏈接用戶的詳細信息。意思如果用戶A找到他的鏈接標識符,那麼應該看到鏈接標識符的詳細信息。

鏈接有三列它的id,user_id和linked_contact_id。 用戶具有user_id,user_name,pass等列。

我嘗試了一次連接,但是我只從這裏獲取鏈接的ID,而不是ID的詳細信息。

SELECT * FROM Users INNER JOIN linkage ON linkage.user_id = Users.user_id WHERE linkage.linked_contact_id = 1 

輸出

user_id linked_contact_id 
1    4 
1    1 
1    5 

我怎樣才能得到這個請幫助..謝謝...

回答

0

您將需要加入的用戶表中的第二次:

SELECT u.*, u2.* FROM Users u 
INNER JOIN linkage l ON l.user_id = u.user_id 
INNER JOIN Users u2 ON l.linked_contact_id = u2.user_id 
WHERE l.linked_contact_id = 1 

請注意,由於您正在兩次選擇相同的列(在u.*, u2.*中),您可能不得不每個字段都有一個別名來區分它們。

0

獲取用戶信息

SELECT users.*, 
      linkage.*, 
      contact.user_id as contact_user_id, 
      contact.user_name AS contact_user_name 
FROM users 
INNER JOIN linkage ON linkage.user_id = users.user_id 
INNER JOIN users AS contact ON linkage.linked_contact_id = contact.user_id 
WHERE linkage.linked_contact_id = 1 

enter image description here

編輯查詢輸出的

這裏截圖

enter image description here

+0

我想所有鏈接標識的所有細節,不僅一個用戶。 @Naveen D Almeida – Sid

+0

上面的查詢返回用戶的所有鏈接標識。 @Sid –

+0

我想獲取linked_contact_id的詳細信息,linked_contact_id不是別的,而是另一個用戶。因此,如果A是用戶,而A有B,C,D作爲鏈接聯繫人,那麼我想顯示A,B,C和D的所有鏈接聯繫人的詳細信息。@ Naveen D Almeida – Sid

0

你的比例有問題。不過沒關係。

嘗試LEFT JOIN或RIGHT JOIN

SELECT * users 
LEFT JOIN linkage 

ON linkage.user_id = users.user_id 

WHERE linkage.linked_contact_id = 1