0

さまざまな場所にあるさまざまなアイテムの在庫を記録したいと考えています。

理想的には、アイテム ID とロケーション ID を参照して、テーブルで数量を指定するだけです。

サンプルデータ

ID | location_id | item_id | 数量
1 | 1 | 1 | 10
2 | 1 | 2 | 12
3 | 1 | 3 | 12
4 | 2 | 1 | 5
5 | 2 | 3 | 5
6 | 3 | 2 | 1

場所とアイテム ID に基づいて行が存在するかどうかを確認し、必要に応じて行を更新または挿入するクエリを作成しようとしています。

私は次のことを試しました:

INSERT INTO `inventory` (`location_id`, `item_id`, `qty`)
VALUES('4', '300', '1')
ON DUPLICATE KEY UPDATE `qty` = `qty` + 1

しかし問題は、キー値が各列でプライマリ/一意である必要があることです。

単一のステートメントでこれを達成する方法についてのアイデアはありますか? IF を使用する必要がありますか?

4

1 に答える 1

0

最初にクエリを書き、そのエントリがあるかどうかを確認します

$sql = "select * from `inventory` where qty = '4'";
if($row = mysql_fetch_array($sql))
{
then query for update 
}
else
{
query for insert
}
于 2013-10-31T11:22:40.827 に答える