SQL: Multiple child rows in one row
Lets say you have two tables with table structure as follows:
PARENT: id (PK), name
CHILD: id(PK), parent_id(FK), value
If you want to get the list of parent along with all child values in a single row, you can run a SQL query as follows:
SELECT
parent.id AS ID,
parent.name AS Name,
GROUP_CONCAT(child.value) AS Values
FROM
parent, child
WHERE
parent.id = child.parent_id
GROUP BY
parent.id;
This will give you the list of all parents with all their child elements in one row. The output will look something like:
ID | Name | Values |
---|---|---|
1 | A | A1,A2 |
2 | B | B1,B2,B3,B4 |
If you need a different seperator other than comma (","), you can modify the query as follows:
SELECT
parent.id AS ID,
parent.name AS Name,
GROUP_CONCAT(child.value SEPARATOR '-') AS Values
FROM
parent, child
WHERE
parent.id = child.parent_id
GROUP BY
parent.id;
If you want to get the list of parent along with all child values in a single row but multiple columns, you can run a SQL query as follows:
SELECT
parent.id AS ID,
child1.value AS Value1,
child2.value AS Value2
FROM
parent
LEFT JOIN
child AS child1 ON parent.id = child1.parent_id AND child1.field_id = 1
LEFT JOIN
child AS child2 ON parent.id = child2.parent_id AND child2.field_id = 2
WHERE
parent.id = child1.parent_id
AND parent.id = child2.parent_id
GROUP BY
parent.id;
This will give you the list of all parents with all their child elements in one row. The output will look something like:
ID | Name | Value1 | Value2 |
---|---|---|---|
1 | A | A1 | A2 |
2 | B | B1 | B2 |
Web Application
Web application development based on your requirements.
CMS
Open Source CMS customisation based on your requirements.
Integration
Integration with various 3rd party applications and services.
Newsletters
The best way to keep in touch and be informed of special offers.