Как организовать группировку по полю в SQL-запросе?

Всем доброго дня! Интересует следующий вопрос.
Есть sql-запрос в firebird:
select B.ACCOUNTID as A1, B.FIO as A2, B.ACCOUNTGTS as A3, A.NUMBERA as A4, C.MAXCONNECTIONS as A5
from TBGTS B
left outer join TBPHONES A on (A.ACCOUNTID = B.ACCOUNTID)
left outer join TBACCOUNTS C on (A.ACCOUNTID = C.ACCOUNTID)
left outer join TBACCOUNTSUPDATE D on (D.ACCOUNTID = A.ACCOUNTID and D.EMITTERKCID = B.EMITTERKCID)

Уникальным идентификатором здесь служить поле А4, остальные 4 боля могут совпадать. Например,
+--+----+---+--------+----+
| 1 | 22 | 33 | uniq1 | 44 |
+--+----+---+--------+----+
| 1 | 22 | 33 | uniq2 | 44 |
+--+----+---+--------+----+
| 5 | 66 | 77 | uniq3 | 88 |
+--+----+---+--------+----+
| 5 | 66 | 77 | uniq4 | 88 |
+--+----+---+--------+----+

Можно ли сделать группировку таким образом, чтобы получить следующий вариант:
+--+----+---+----------------+----+
| 1 | 22 | 33 | uniq1, uniq2 | 44 |
+--+----+---+----------------+----+
| 5 | 66 | 77 | uniq3, uniq4 | 88 |
+--+----+---+----------------+----+

Голова уже не варит, прочитано кучу доков.
group by ....
с перечислением полей не дал результатов.

Либо сделать такую группировку средствами PHP. Но опять же не понимаю как именно...

Прошу помощи у более опытных.
  • Вопрос задан
  • 412 просмотров
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
GROUP_CONCAT()

select 
    B.ACCOUNTID as A1, 
    B.FIO as A2, 
    B.ACCOUNTGTS as A3, 
    GROUP_CONCAT(A.NUMBERA SEPARATOR ', ') as A4, 
    C.MAXCONNECTIONS as A5
from TBGTS B
left outer join TBPHONES A on (A.ACCOUNTID = B.ACCOUNTID)
left outer join TBACCOUNTS C on (A.ACCOUNTID = C.ACCOUNTID)
left outer join TBACCOUNTSUPDATE D on (D.ACCOUNTID = A.ACCOUNTID and D.EMITTERKCID = B.EMITTERKCID)
group by B.ACCOUNTID, B.FIO, B.ACCOUNTGTS, C.MAXCONNECTIONS
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы