【问题标题】:How can I combine two tables and group the results of one table?如何合并两个表并将一个表的结果分组?
【发布时间】:2018-04-04 03:42:43
【问题描述】:

我想合并两张表。

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     

【问题讨论】:

    标签: mysql left-join group-concat


    【解决方案1】:

    您想将所有具有相同list_id 的动物合并,因此您需要将Group bylist_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);
    

    希望对你有帮助!

    【讨论】:

    • 如果你添加一些关于你的sn-ps如何解决OP问题的cmets会更好,
    猜你喜欢
    • 1970-01-01
    • 2017-08-15
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多