Dapatkan hasil dari bergabung dengan beberapa tabel sebagai satu baris

8

Saya punya 2 tabel ini:

table1:

id | name
---------
1  | john
2  | jack

table2:

id | profile_id | institution
-----------------------------
1  | 1          | SFU
2  | 1          | UBC
3  | 2          | BU
4  | 2          | USC
5  | 2          | SFU

Jika saya ingin mendapatkan semua informasi tentang pengguna yang menggunakan userid-nya, saya cukup bergabung dengan mereka menggunakan ini:

select a.id, a.name, b.institution from table1 a, table2 b
where a.id = USER_ID and a.id = b.profile_id

yang untuk USER_ID = 1 menghasilkan:

id | name | institution
-----------------------
1  | john | SFU
1  | john | UBC

Yang saya butuhkan sebenarnya adalah 1 baris unik dan bukan beberapa baris. Apakah mungkin untuk mendapatkan sesuatu seperti ini? (Saya belum melihat sesuatu untuk dilakukan tetapi saya tidak yakin)

id | name | institution
-----------------------
1  | john | [SFU, UBC]
AliBZ
sumber

Jawaban:

8

Anda dapat menggunakan fungsi GROUP_CONCAT

SELECT a.id, a.name, CONCAT('[',GROUP_CONCAT(b.institution),']') institution
FROM table1 a INNER JOIN table2 b
ON a.id = b.profile_id
WHERE a.id = USER_ID
GROUP BY a.id, a.name;

atau dengan permintaan awal Anda

select a.id, a.name, CONCAT('[',GROUP_CONCAT(b.institution),']') institution
from table1 a, table2 b where a.id = USER_ID and a.id = b.profile_id
group by a.id, a.name;

Cobalah !!!

RolandoMySQLDBA
sumber
GROUP_CONCAT melakukan keajaiban! sorak-sorai
AliBZ
@RolandoMySQLDBA "... dan di sini arloji saya berakhir": P, saya sudah mencari ini sejak lama. Terima kasih
PHP Mentor