2017-01-28 107 views
-1

我試圖在前端顯示一個表。這些應用程序是用AngularJS和PHP編寫的。動態查詢分組特定字段

我的表是這樣的:

+-----------+--------+--------+ 
| id_person | id_car | value | 
+-----------+--------+--------+ 
| 1   | 1 | 1000 | 
| 1   | 2 | 2000 | 
| 2   | 1 | 2200 | 
| 2   | 2 | 1100 | 
| 3   | 3 | 3000 | 
+-----------+--------+--------+ 

我需要顯示在前端的表格式如下:

+-----------+--------+--------+---------+ 
|   | Car 1 | Car 2 | Car 3 | 
+-----------+--------+--------+---------| 
| Person 1 | 1000 | 2000 | 0 | 
| Person 2 | 2200 | 1100 | 0 | 
| Person 3 | 0 | 0 | 3000 | 
+-----------+--------+--------+---------+ 

每個人的值將出現在汽車領域。 如果值爲空或不存在,它將顯示0或作爲空值。

任何線索?

謝謝。

回答

1

您可以結合使用SUM與GROUP BY像你想轉動表。

創建表/插入

CREATE TABLE cars 
    (`id_person` INT, `id_car` INT, `value` INT) 
; 

INSERT INTO cars 
    (`id_person`, `id_car`, `value`) 
VALUES 
    (1, 1, 1000), 
    (1, 2, 2000), 
    (2, 1, 2200), 
    (2, 2, 1100), 
    (3, 3, 3000) 
; 

查詢

SELECT 
    CONCAT('Person ', cars.id_person) "Person" 
, SUM(CASE WHEN cars.id_car = 1 THEN cars.value ELSE 0 END) "Car 1" 
, SUM(CASE WHEN cars.id_car = 2 THEN cars.value ELSE 0 END) "Car 2" 
, SUM(CASE WHEN cars.id_car = 3 THEN cars.value ELSE 0 END) "Car 3" 
FROM 
cars 
GROUP BY 
cars.id_person 
ORDER BY 
cars.id_person ASC 

結果

Person Car 1 Car 2 Car 3 
-------- ------ ------ -------- 
Person 1 1000 2000 0  
Person 2 2200 1100 0  
Person 3 0  0  3000  

觀看演示http://sqlfiddle.com/#!9/65bf69/1

或者空值

查詢

SELECT 
    CONCAT('Person ', cars.id_person) "Person" 
, SUM(CASE WHEN cars.id_car = 1 THEN cars.value ELSE NULL END) "Car 1" 
, SUM(CASE WHEN cars.id_car = 2 THEN cars.value ELSE NULL END) "Car 2" 
, SUM(CASE WHEN cars.id_car = 3 THEN cars.value ELSE NULL END) "Car 3" 
FROM 
cars 
GROUP BY 
cars.id_person 
ORDER BY 
cars.id_person ASC 

結果

Person Car 1 Car 2 Car 3 
-------- ------ ------ -------- 
Person 1 1000 2000 (NULL) 
Person 2 2200 1100 (NULL) 
Person 3 (NULL) (NULL) 3000  

看到演示http://sqlfiddle.com/#!9/65bf69/2

+0

這正是我正在尋找的。謝謝!!! – Cristiano

1

返回從服務器上一個JSON像

[ 
{ 
    "person": {"id":1, "name":"Sam"}, 
    "cars": [ 
    {"id":1, "name":"Ford", "value": 1000}, 
    {"id":1, "name":"Audi", "value": 1200} 
    ] 
}, 
//.... 

] 
+0

好,但我的問題是Ë非常感謝。查詢來構建表結構。 – Cristiano