2014-03-27 44 views
0

我有2個MySQL表,我想爲TableA中的每個記錄選擇1行,但每個記錄最多可以有2個來自TableB的「Payer」記錄,所以我希望每個表B中的值作爲單行。從表中選擇單個行,並使用不同表中的多個行值

這裏是我的表的一個小例子:

TableA 
RecordID |  Name |   Date | 
     1 | 'Record1' | '2014-01-01' | 
     2 | 'Record2' | '2014-01-02' | 

TableB 
RecordID | AmountPaid | PayerCount | PayerCode | 
     1 |  $10.99 |   1 |  1234 | 
     1 |  $15.99 |   2 |  9876 | 
     2 |  $27.99 |   1 |  1234 | 
     2 |  $61.99 |   2 |  9876 | 

TableB.PayerCount:1 =第一個付款人和2 =第二付款人。

這是我從這些表所需的信息:我只是不能似乎發現了什麼,這將使我這些結果

ID |  Name |   Date | FirstPayerCode | FirstPayerAmount | SecondPayerCode | SecondPayerAmount | 
1 | 'Record1' | '2014-01-01' |   1234 |   $10.99 |   9876 |   $15.99 | 
2 | 'Record2' | '2014-01-02' |   1234 |   $27.99 |   9876 |   $61.99 | 

任何幫助將不勝感激。謝謝。

+1

你寫了什麼SQL? – broinjc

+0

現在,我只是得到2行的每個記錄與「SELECT * FROM TableA JOIN TableB USING(RecordID)」。但是我爲每個記錄標識需要一行,但不能想到(或找到)我需要的語法。 –

回答

2
SELECT  tableA.id, tableA.name, tableA.date, 
      FirstPlayerCode, FirstPlayerAmount, 
      SecondPlayerCode, SecondPlayerAmount 
FROM  tableA 
LEFT JOIN (SELECT PayerCode AS FirstPlayerCode, AmountPaid AS FirstPlayerAmount 
      FROM tableB 
      WHERE PlayerCount = 1) p1 ON p1.RecordID = tableA.RecordID 
LEFT JOIN (SELECT PayerCode AS SecondPlayerCode, AmountPaid AS SecondPlayerAmount 
      FROM tableB 
      WHERE PlayerCount = 2) p2 ON p2.RecordID = tableA.RecordID 
+0

美麗,這正是我需要的。我不知道你可以加入選擇聲明。謝謝您的幫助! –

相關問題