具有多个值的MySQL列

时间:2017-01-13 01:25:52

标签: mysql database

我有一个关于在表格中添加值的问题。现在我正在开发一个应用程序,您可以在其中维护一个工具车库存。

<?php
include 'dbconnect.php';

// Stock query
$sql = "SELECT * FROM product WHERE locationcode = 'loc1'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
     // output data of each row
     while($row = $result->fetch_assoc()) {
         echo "<tr>";
         echo "<td>".$row['locationcode']."</td>";
         echo "<td>".$row['product_id']."</td>";
         echo "<td>".$row['amount']."</td>";
     }
} 
else {
     echo "0 results";
}

$conn->close();

我为可用产品制作的表格包括以下栏目:
- 产品编号
- 产品类型
- 品牌
- 型号
- 成本价格
- 销售价格 - 位置代码
- 金额

该工具车间的许多产品可在多个地点使用(全国各地有几家实体店)。

是否可以在列中添加多个值?这是因为客户应该能够过滤产品和相应的位置(IE。产品可以在位置1和位置2都可用)。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我强烈建议不要在列中添加多个值,例如在这里使用CSV。而是创建一个新表,比如product_locations,其中有一列用于产品ID,另一列用于位置ID。

例如,如果产品1仅出现在位置1,而产品2出现在位置1和2中,则表格如下所示:

ProductID | LocationID
    1     |     1
    2     |     1
    2     |     2

请注意,如果您需要显示指定产品的所有位置,您始终可以使用GROUP_CONCAT汇总上表,例如

SELECT ProductID, GROUP_CONCAT(LocationID) AS locations
FROM product_locations
GROUP BY ProductID