如何组合两个 table 并将一个 table 的结果分组?
How can I combine two tables and group the results of one table?
我想合并两个 table。
table list
:
| id | day |
|:-----|------------:|
| 1 | monday |
| | |
| | |
|:-----|------------:|
| 2 | tuesday |
| | |
table animals
:
| id | animal | list_id |
|:-----|------------:|:----------:|
| 1 | cat | 1 |
|:-----|------------:|:----------:|
| 2 | bird | 1 |
|:-----|------------:|:----------:|
| 3 | monkey | 1 |
|:-----|------------:|:----------:|
| 4 | frog | 2 |
|:-----|------------:|:----------:|
| 5 | dog | 2 |
|:-----|------------:|:----------:|
这是我的方法:
$animals = $db->query('SELECT *,
GROUP_CONCAT(animals.animal SEPARATOR " <br> ") AS animals
FROM list
LEFT JOIN animals ON list.id=animals.list_id
')->fetchAll(PDO::FETCH_ASSOC);
这是我想要的结果:
| id | day | animal |
|:-----|------------:|:------------:|
| 1 | monday | cat |
| | | bird |
| | | monkey |
|:-----|------------:|:------------:|
| 2 | tuesday | frog
| | | dog
但我实际得到的结果是:
| id | day | animal |
|:-----|------------:|:------------:|
| 1 | monday | cat |
| | | bird |
| | | monkey |
| | | frog
| | | dog
您想要合并具有相同 list_id
的所有动物,因此您需要使用 Group by
和 list_id
。 Group_concat()
将连接每个组的所有结果。因此,以下查询应该有效:
$animals = $db->query('SELECT l.*,
GROUP_CONCAT(animals.animal SEPARATOR " <br> ") AS animals
FROM list l
LEFT JOIN animals ON list.id=animals.list_id
group by animals.list_id // Added statement
')->fetchAll(PDO::FETCH_ASSOC);
希望对您有所帮助!
我想合并两个 table。
table list
:
| id | day |
|:-----|------------:|
| 1 | monday |
| | |
| | |
|:-----|------------:|
| 2 | tuesday |
| | |
table animals
:
| id | animal | list_id |
|:-----|------------:|:----------:|
| 1 | cat | 1 |
|:-----|------------:|:----------:|
| 2 | bird | 1 |
|:-----|------------:|:----------:|
| 3 | monkey | 1 |
|:-----|------------:|:----------:|
| 4 | frog | 2 |
|:-----|------------:|:----------:|
| 5 | dog | 2 |
|:-----|------------:|:----------:|
这是我的方法:
$animals = $db->query('SELECT *,
GROUP_CONCAT(animals.animal SEPARATOR " <br> ") AS animals
FROM list
LEFT JOIN animals ON list.id=animals.list_id
')->fetchAll(PDO::FETCH_ASSOC);
这是我想要的结果:
| id | day | animal |
|:-----|------------:|:------------:|
| 1 | monday | cat |
| | | bird |
| | | monkey |
|:-----|------------:|:------------:|
| 2 | tuesday | frog
| | | dog
但我实际得到的结果是:
| id | day | animal |
|:-----|------------:|:------------:|
| 1 | monday | cat |
| | | bird |
| | | monkey |
| | | frog
| | | dog
您想要合并具有相同 list_id
的所有动物,因此您需要使用 Group by
和 list_id
。 Group_concat()
将连接每个组的所有结果。因此,以下查询应该有效:
$animals = $db->query('SELECT l.*,
GROUP_CONCAT(animals.animal SEPARATOR " <br> ") AS animals
FROM list l
LEFT JOIN animals ON list.id=animals.list_id
group by animals.list_id // Added statement
')->fetchAll(PDO::FETCH_ASSOC);
希望对您有所帮助!