GOOGLE ADS

воскресенье, 24 апреля 2022 г.

как объединить название должности с одним и тем же человеком в MySQL

У меня есть 2 таблицы, таблица anggota и pengurus, где таблицы объединены, где например одно и то же имя с разными jabatan, то jabatan объединены в одну строку

член таблицы:

+----+-------+------+--------+--------+
| id | nama | nik | no_kta | alamat |
+----+-------+------+--------+--------+
| 4 | abas | 0001 | 0021 | a |
| 5 | panji | 0002 | 0022 | b |
| 6 | doni | 0003 | 0023 | c |
+----+-------+------+--------+--------+

администратор таблицы:

+----+-------------+-----------+
| id | id_anggota | jabatan |
+----+-------------+-----------+
| 1 | 4 | ketua |
| 2 | 6 | bendahara |
| 3 | 6 | sekretaris|
+----+-------------+-----------+

postgresql: выберите a.nama, a.nik, a.no_kta, a.address, p.jabatan из члена, администратор левого соединения p на a.id = p.id_member, где a.id_party = 4

+-------+------+--------+--------+------------+
| nama | nik | no_kta | alamat | jabatan |
+-------+------+--------+--------+------------+
| abas | 0001 | 0021 | a | ketua |
| doni | 0003 | 0023 | c | bendahara |
| doni | 0003 | 0023 | c | sekretaris |
| panji | 0002 | 0022 | b | null |
+-------+------+--------+--------+------------+

Я хочу, чтобы данные вышли так:

+-------+------+--------+--------+-----------------------+
| nama | nik | no_kta | alamat | jabatan |
+-------+------+--------+--------+-----------------------+
| abas | 0001 | 0021 | a | ketua |
| doni | 0003 | 0023 | c | bendahara, sekretaris |
| panji | 0002 | 0022 | b | null |
+-------+------+--------+--------+-----------------------+


Решение проблемы

использовать string_aggследующим образом

SELECT nama,
nik,
no_kta,
alamat,
String_agg(jabatan, ',') AS jabatan
FROM anggota a
FULL JOIN pengurus p
ON a.id = p.id_anggota
GROUP BY nama,
nik,
no_kta,
alamat

или с помощьюsubquery

 SELECT nama,
nik,
no_kta,
alamat,
jabatan
FROM (
SELECT id_anggota,
string_agg(jabatan,',') AS jabatan
FROM pengurus
GROUP BY id_anggota ) P
FULL JOIN anggota a
ON a.id=p.id_anggota

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...