2012-08-15 35 views
1

我有两个表MySQL的加入表上的三列

首先有用户交易:

Date Transaction P1 P2 P3 P4 P5 

(P1-P5是三位数字用户ID) 每笔交易都有1,2, 3个,4个,有时甚至5个与之相关的用户。

第二个表具有用户信息:

ID NAME ACTIVE 

我已经习惯了使用JOIN来显示用户的名字,而不是他们的ID,但有五个用户,我不知道怎么办显示器他们的名字在我的PHP/HTML表格中。

任何人都可以对此有所了解吗? 在此先感谢

回答

4

您可以为每个用户加入同一张表。如果你这样做,你必须以不同的方式为多个连接的表格进行别名。

select t1.Date, t1.Transaction, t1.P1, t1.P2, t1.P3, t1.P4, t1.P5 
     u1.name, u2.name, u3.name, u4.name, u5.name 
from table1 t1 
left outer join table2 u1 on t1.p1 = u1.id 
left outer join table2 u2 on t1.p2 = u2.id 
left outer join table2 u3 on t1.p3 = u3.id 
left outer join table2 u4 on t1.p4 = u4.id 
left outer join table2 u5 on t1.p5 = u5.id 
+0

我只是写了几乎相同的答案。 – Adrian 2012-08-15 05:13:18

+0

这工作得很好!谢谢。 如果我仍然需要在PHP服务器端进行连接的三位ID,我该如何访问它们? – dsol828 2012-08-15 05:36:28

+0

@ dsol828:您可以将它们添加到您的查询中。我更新了答案。当然是 – 2012-08-15 05:40:59

2

一些领域将有null值,如果有上没有ID

SELECT a.`Date, a.`Transaction`, 
     b.name as P1Name, 
     c.name as P2Name, 
     d.name as P3Name, 
     e.name as P4Name, 
     f.name as P5Name 
FROM transactions a 
      LEFT JOIN info b 
       on a.p1 = b.id 
      LEFT JOIN info c 
       on a.p1 = c.id 
      LEFT JOIN info d 
       on a.p1 = d.id 
      LEFT JOIN info e 
       on a.p1 = e.id 
      LEFT JOIN info f 
       on a.p1 = f.id 
1

我想你应该把所有的名字放在'td'中用换行符分开。