我想结合两张桌子。
表list
:
| id | day |
|:-----|------------:|
| 1 | monday |
| | |
| | |
|:-----|------------:|
| 2 | tuesday |
| | |
表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
答案 0 :(得分:1)
您想要将所有动物与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);
希望它有所帮助!