2012-08-15 1 views
1

세 개의 열 표를 가입 첫 번째는 사용자 트랜잭션이 있습니다MySQL은 내가 두 테이블</p> <p>있어

Date Transaction P1 P2 P3 P4 P5 

(P1-P5는 세 자리 사용자 ID의 있습니다) 각 거래 2, 1이, 3, 4, 그리고 때로는 5 명의 사용자가 있습니다.

두 번째 표는 사용자 정보가 있습니다

ID NAME ACTIVE 

내가 그들의 ID는 대조적으로 사용자의 이름을 표시 가입하여 사용 해요,하지만 FIVE 사용자와, 난 아무 생각이 어떻게 표시 할 PHP/HTML 테이블에 이름이 있습니다.

누구든지이 문제에 대해 의견을 개진 할 수 있습니까? 미리 감사드립니다.

답변

4

모든 사용자에 대해 동일한 테이블을 가입 할 수 있습니다. 그렇게하면 여러 개의 조인 된 테이블을 다르게 별칭을 지정해야합니다. 거기에 더 ID이없는 경우

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

+0

위대한 작품! 감사. PHP 서버 측에서 링크 용으로 3 자리 숫자의 ID가 필요한 경우 어떻게 액세스 할 수 있습니까? – dsol828

+0

@ dsol828 : 쿼리에 추가 할 수 있습니다. 나는 대답을 업데이트했다. 물론 –

2

일부 필드는 null 값을 가질 것이다.

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'에 모든 이름을 입력해야한다고 생각합니다.