2014-07-19 58 views
1

我做兩個表:如何在單個表具有兩個不同屬性的相同值時進行mysql查詢?

Member(member_id,name,contact) 
Registration(loan_id,member_id,witness1_id,witness2_id,status) 
primary key of Member,registration table are member_id and loan_id respectively. 

的witness1_id和witness2_ ID是在成員表中的member_id這意味着每個成員有兩名證人誰是自己組織的成員。 我想打一個查詢這給成員的名單與證人的細節,其狀態爲1沿,輸出應該是以下模式:

(member_id,name_of_member,witness1_name,witness1_contact,witness2_name, 
witness2_contact) 

爲了使問題易於理解,我沒有將完整的模式,而我已經使用了必填字段。

example : 
Member 
member_id  name  contact 
1    xyz  1111111111 
2    abc  2222222222 
3    pqr  3333333333 
4    efg  4444444444 

Registration 
loan_id  member_id witness2_id witness2_id status 
123   1   2    3    1 
124   2   1    3    0 
125   4   2    1    1 

output/result 
member_id  name  witness1_name witness1_contact witness2_name witness2_contact 
1    xyz  abc   22222222   pqr    333333333 
4    efg  abc   22222222   xyz    111111111 
+0

我無法理解你想要什麼。你能展示一些樣本數據和預期結果嗎? – Barmar

+0

請在sqlfiddle上發佈您的架構和一些虛擬數據... – ursitesion

回答

0

您需要在列的前面加上表名或查詢中使用的別名。

SELECT member.name, registration.status 
FROM member 
JOIN registration ON (registration.member_id = member.member_id) 
WHERE ... 
0

這應做到:

SELECT r.member_id, m.name as name_of_member 
, w1.name as witness1_name, w1.contact as witness1_contact 
, w2.name as witness2_name, w2.contact as witness2_contact 
FROM registration as r 
LEFT JOIN member as m ON (r.member_id = m.member_id) 
LEFT JOIN member as w1 ON (r.witness1_id = w1.member_id) 
LEFT JOIN member as w2 ON (r.witness2_id = w2.member_id) 
WHERE r.status = 1 
相關問題