MySQL连接表三列

时间:2012-08-15 05:07:58

标签: mysql join

我有两张桌子

第一个有用户交易:

Date    Transaction    P1    P2    P3    P4    P5

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

第二个表格包含用户信息:

ID    NAME    ACTIVE

我习惯使用JOIN来显示用户的NAMES而不是他们的ID,但是对于FIVE用户,我不知道如何在我的PHP / HTML表中显示他们的名字。

有人能够对此有所了解吗?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:1)

我认为你应该把'td'中的所有名字都换成换行符。