2015-02-25 2 views
1

Я следующий тузда таблицей: таблицы: ставкиGROUP_CONCAT не работает в PHP

id | compid | itemid | rate | year 
1 |  1 |  1 | 2.0 | 2015 
2 |  1 |  2 | 4.2 | 2015 
3 |  1 |  3 | 2.3 | 2015 
4 |  2 |  1 | 3.0 | 2015 
5 |  2 |  2 | 4.0 | 2015 
6 |  2 |  3 | 2.5 | 2015 
7 |  3 |  1 | 2.3 | 2015 
8 |  3 |  2 | 4.5 | 2015 
9 |  3 |  3 | 2.8 | 2015 

Если я использую следующий MySQL запрос из PHP, он хорошо работает:

SELECT itemid, GROUP_CONCAT(rate) FROM bid GROUP BY itemid 

Результат:

Array ([itemid] => 1 [GROUP_CONCAT(rate)] => 2.0,3.0,2.3) 
Array ([itemid] => 2 [GROUP_CONCAT(rate)] => 4.2,4.0,4.5) 
Array ([itemid] => 3 [GROUP_CONCAT(rate)] => 2.3,2.5,2.8) 

Но если я использую следующий запрос, он не работает:

SELECT itemid, GROUP_CONCAT(CASE WHEN compid=1 THEN rate ELSE 0 END as company01, CASE WHEN compid=2 THEN rate ELSE 0 END as company02, CASE WHEN compid=3 THEN rate ELSE 0 END as company03) FROM bid GROUP BY itemid 

Что такое ошибка в моем втором запросе SELECT и как достичь GROUP_CONCAT этим?

ответ

1

Если вы хотите сделать столбцы, возможно, этот запрос.

SELECT itemid, 
    MAX(CASE WHEN compid = 1 THEN rate END) as 'company01', 
    MAX(CASE WHEN compid = 2 THEN rate END) as 'company02', 
    MAX(CASE WHEN compid = 3 THEN rate END) as 'company03' 
FROM bid 
GROUP BY itemid 
+0

Большое спасибо –

Смежные вопросы