【发布时间】:2013-08-01 03:15:58
【问题描述】:
我有两个 MySQL 表。这是第一个 [products] (PRIMARY = id):
[id] | title | description
这是第二个 [sizes](PRIMARY = id & size):
[id] | [size]
size 只能具有来自[1,2,3,4,5,6] 的值。
我有一个包含大小值的 PHP 数组。我将它重塑为一个逗号分隔的值字符串,如下所示:
$size_list = implode(",", $sizes);
对于不熟悉PHP的朋友,上面的代码会生成这样的字符串:“1,4,5”,然后这样查询数据库:
$query = "SELECT t1.id,t1.title,t1.description,t2.size FROM products t1 INNER JOIN sizes t2 ON t1.id=t2.id WHERE size IN(".$size_list .")";
但此查询复制了尺寸表中每种尺寸的产品。 我想:
从 products 表中返回在 size 表中至少有一个可用尺码的记录,且不重复
当然
希望将变量中的这些尺寸显示给客户
例如:
产品:
1 | product1 | description1
2 | product2 | description2
3 | product3 | description3
4 | product4 | description4
尺寸:
1 | 1
1 | 2
1 | 4
1 | 5
2 | 1
2 | 5
给定$sizes_list="1,2",我想要的输出是:
1 | product1 | description1 | 1,2,4,5
2 | product2 | description2 | 1,5
【问题讨论】:
标签: mysql sql select database-design inner-join