2017-01-13 8 views
0

テーブルに値を追加する方法について質問があります。今、私はあなたがツールショップなどの在庫を維持できるアプリケーションに取り組んでいます。複数の値を持つMySQLカラム

<?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(); 

私が利用可能な製品のために作られたテーブルには、次の列で構成されています
- プロダクトID
- 製品タイプ
- ブランド
- モデル
- コストの価格
- 販売価格
- ロケーションコード
- 金額

このツールショップの多くの製品は、複数の場所で利用できます(国内にはいくつかの物理的な店舗があります)。

列に2つ以上の値を追加することはできますか?これは、クライアントが製品と対応するロケーション(IE。製品はロケーション1とロケーション2の両方で使用可能)でフィルタリングできる必要があるためです。

ありがとうございます!

+2

正規化を参照してください。 – Strawberry

答えて

2

列に複数の値を追加することを強くお勧めします。ここではCSVを使用します。代わりに、新しいテーブルを作成します。具体的には、product_locationsにはProduct IDの列とLocation 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 
関連する問題