【问题标题】:SQL JOIN multiple ID'sSQL JOIN 多个 ID
【发布时间】:2017-02-11 11:06:29
【问题描述】:

第一个表

|product_name   |   category_ids  |
|---------------------------------|
|- apple        |   1, 2          |
|- extra_apple  |   1, 3          |

第二张桌子

|category_id  |   category_name   |
|---------------------------------|
|- 1          |   fruit           |
|- 2          |   cheap           |  
|- 3          |   expensive       |

我怎样才能加入这个,所以我得到这样的东西

|     product_name  |     category_names   |
--------------------------------------------
|     apple         |     fruit, cheap     |
|     extra_apple   |     fruit, expensive |

【问题讨论】:

  • 这里真正的解决方案是修复你的非标准化表格设计。

标签: php mysql sql join


【解决方案1】:

为了使它正确,添加另一个表:

product_categories table
------------------------
product_id
category_id

它包含一个产品的每个类别的记录。

【讨论】:

    【解决方案2】:

    第一个表没有规范化

    |product_name   |   category_ids  |
    |---------------------------------|
    |- apple        |   1, 2          |
    |- extra_apple  |   1, 3          |
    

    首先规范化这个表 AS

    |product_name   |   category_ids  |
    |---------------------------------|
    |- apple        |   1             |
    |- apple        |   2             |
    |- extra_apple  |   1             |
    |- extra_apple  |   3             |
    

    第二张桌子

    |category_id  |   category_name   |
    |---------------------------------|
    |- 1          |   fruit           |
    |- 2          |   cheap           |  
    |- 3          |   expensive       |
    

    MySQL 语法为:“SELECT T1.product_name, T2.category_name FROM FIRST_TABLE AS T1, SECOND_TABLE AS T2 WHERE T1.category_ids=T2.category_id”

    这会给你结果:

    |     product_name  |     category_names   |
    --------------------------------------------
    |     apple         |     fruit            |
    |     apple         |     cheap            |
    |     extra_apple   |     fruit            |
    |     extra_apple   |     expensive        |
    

    【讨论】:

      猜你喜欢
      • 2015-07-30
      • 2021-03-27
      • 2011-03-03
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多