sql - Merge data from two cells from the same column in different rows in MySQL/MariaDB -


i having trouble searching answer question, because of lack of knowledge terminology , sql, though know exists.

i have database following tables:
desc pkm;

+-----------------+---------------+------+-----+---------+-------+ | field           | type          | null | key | default | | +-----------------+---------------+------+-----+---------+-------+ | pkm_code        | int(11)       | no   | pri | null    |       | | pkm_name        | varchar(32)   | no   | uni | null    |       | | pkm_category    | varchar(32)   | no   |     | null    |       | | pkm_description | varchar(1280) | no   |     | null    |       | | pkm_weight      | float         | no   |     | null    |       | | evolution_code  | int(11)       | yes  | mul | null    |       | +-----------------+---------------+------+-----+---------+-------+ 

desc poketype;

+---------------------+------------+------+-----+---------+-------+ | field               | type       | null | key | default | | +---------------------+------------+------+-----+---------+-------+ | pkm_code            | int(11)    | no   | pri | null    |       | | type_code           | int(11)    | no   | pri | null    |       | | poketype_is_primary | tinyint(1) | no   |     | null    |       | +---------------------+------------+------+-----+---------+-------+ 

desc type;

+-----------+-------------+------+-----+---------+-------+ | field     | type        | null | key | default | | +-----------+-------------+------+-----+---------+-------+ | type_code | int(11)     | no   | pri | null    |       | | type_name | varchar(32) | no   | uni | null    |       | +-----------+-------------+------+-----+---------+-------+ 

and far have following sql command:

select pkm.pkm_code, pkm.pkm_name,type.type_name poketype     join pkm on pkm.pkm_code=poketype.pkm_code     join type on poketype.type_code=type.type_code     pkm.pkm_code<=151     order pkm_code; 

which displays primary , secondary types on separate lines.
how both types display on same row dual-type pokemon?

my current results:

+-----------+-------------+-----------+ | pkm_code  | pkm_name    | type_name | +-----------+-------------+-----------+ | 1         | bulbasaur   | grass     | | 1         | bulbasaur   | poison    | 

desired results:

+-----------+-------------+-------------+ | pkm_code  | pkm_name    | type_name   | +-----------+-------------+-------------+ | 1         | bulbasaur   | grass,poison| 

(yes, bulbasaur dual type. surprised too!)

use mysql's group_concat() function combine values different records in single value:

select pkm.pkm_code, pkm.pkm_name, group_concat(type.type_name) typename poketype     join pkm on pkm.pkm_code=poketype.pkm_code     join type on poketype.type_code=type.type_code     pkm.pkm_code<=151     group pkm.pkm_code, pkm.pkm_name; 

Comments