2012-07-23 59 views
0

我想加入processID上的兩個MySQL表,並獲得如下報告。需要幫助使用php mysql生成報告

table 1: LMProcess 
------------------------------------ 
| ProcessID | LMNo | Status | Dept | 
------------------------------------ 
|1   |1001 |1  |Legal | 
|2   |1001 |1  |R&D | 
|3   |1001 |1  |D&R | 
|4   |1001 |1  |L&M | 
|5   |1002 |1  |Legal | 
|6   |1002 |1  |R&D | 
|7   |1002 |1  |D&R | 
|8   |1002 |1  |L&M | 
------------------------------------ 

table 2: Recommendation 
----------------------------------- 
| ID | ProcessID | Recommendation | 
----------------------------------- 
| |1   |Yes    | 
| |2   |No    | 
| |3   |Yes    | 
| |4   |Yes    | 
| |5   |Yes    | 
| |6   |No    | 
| |7   |No    | 
| |8   |Yes    | 
----------------------------------- 

Report: LM File Recommendations by the Departments 
---------------------------------- 
| LMNo | Legal | R&D | D&R | L&M | 
---------------------------------- 
|1001 |Yes |No |Yes |Yes | 
|1002 |Yes |No |No |Yes | 
---------------------------------- 

回答

1

您正在嘗試進行旋轉操作,這是一些其他的RDBMS原生支持,但是MySQL不(爲開發商覺得這是一件真正屬於在表示層,而不是數據庫的東西)。

但是,您可以將您的結果通過LMNo和使用MySQL的GROUP_CONCAT()功能來達到預期的效果:

SELECT LMNo 
     , GROUP_CONCAT(IF(Dept='Legal', Recommendation, NULL)) AS `Legal` 
     , GROUP_CONCAT(IF(Dept='R&D' , Recommendation, NULL)) AS `R&D` 
     , GROUP_CONCAT(IF(Dept='D&R' , Recommendation, NULL)) AS `D&R` 
     , GROUP_CONCAT(IF(Dept='L&M' , Recommendation, NULL)) AS `L&M` 
FROM  LMProcess JOIN Recommendation USING (ProcessID) 
GROUP BY LMNo 
+0

看到它在[sqlfiddle](http://sqlfiddle.com/#!2/c2bc5/1/0)。 – eggyal 2012-07-23 18:37:30

+0

非常感謝eggyal。 – 2012-07-27 08:32:19