SQL JOIN多个ID

时间:2017-02-11 11:06:30

标签: php mysql sql join

第一张表

|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 |

2 个答案:

答案 0 :(得分:3)

要做到这一点,请添加另一个表:

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

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

答案 1 :(得分:1)

第一个表不是标准化

|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为T1,SECOND_TABLE为T2,其中T1.category_ids = T2.category_id”

这将给你结果:

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