2011-05-03 177 views
2

我有一個具有以下結構的支付表。需要mysql查詢幫助

**Payments** 
id 
name 
created_by - user_id 
closed_by - user_id 

**Users** 
user_id 
name 
surname 

什麼是顯示創建並關閉付款文件的用戶名和姓的最佳方式。

我能想到這可能會使用兩個子查詢工作的唯一方法(CREATED_BY,closed_by場)感謝

+2

您可以使用JOIN。 – 2011-05-03 06:52:43

+0

JOIN怎麼樣? – Ruben 2011-05-03 06:52:52

+0

你能給我一個'JOIN'的例子嗎? – Contra 2011-05-03 06:58:07

回答

3

試試這個:

SELECT p.id, p.name, 
CONCAT (u1.name,' ', u1.surname) created, 
CONCAT (u2.name,' ', u2.surname) closed, 
FROM payments p INNER JOIN users u1 
ON p.created_by = u1.user_id 
INNER JOIN users u2 
ON p.closed_by = u2.user_id 

編輯:如果你想要的名稱和姓分裂

SELECT p.id, p.name, 
u1.name created_name, u1.surname created_surname, 
u2.name closed_name, u2.surname closed_surname, 
FROM payments p INNER JOIN users u1 
ON p.created_by = u1.user_id 
INNER JOIN users u2 
ON p.closed_by = u2.user_id 
+0

我想你誤會了我的created_by和closed_by女巫本質上是一個'user_id',但是我需要名字和姓氏的created_by和關閉字段 – Contra 2011-05-03 06:56:42

+0

@Contra:I給你加入了字段...如果你想讓他們分開,我要編輯我的帖子... – Marco 2011-05-03 06:58:55

+0

圖例這個作品我會謝謝接受stackoverflow允許我(3分鐘) – Contra 2011-05-03 07:02:20

1

嚴格的加盟是不夠,我想你ç在where子句中使用加入

select name, surname 
from 
    payments p, users u 
where 
    u.user_id = p.created_by 
    and u.user_id = p.closed_by 
+0

'付款'沒有'user_id'列。 – 2011-05-03 06:56:40

+0

我認爲這不起作用,如果created_by不同於closed_by。我錯了嗎? – Marco 2011-05-03 07:01:00

+0

謝謝@spacecowboy – Massimog 2011-05-03 07:06:59

0

您可以多次連接到單個表,但必須使用別名。

select 
p.*,cr.*,cl.* 
from 
payments p 
join users cr 
on p.created_by = cr.user_id 
join users cl 
on p.closed_by = cl.user_id