2012-01-22 14 views
7

私は2つのテーブル(実際にはもっと多くの)を持つMySQLデータベースを持っています。最初のテーブルは、製品のSKU番号を任意のIDにリンクします。このIDに基づいて各アイテムの終わりの在庫を記録する2番目のテーブルがあります。販売以外の理由で在庫が変更された場合、この2番目の表にブール値をfalseに設定したレコードが置かれます。これにより、この新しい番号は、前の販売のベクトルとしては有効ではなく、翌日の販売のためのものであると言えます。MySQLを "REPLACE INTO"で1つのフィールドを取得するSELECTを使用

このコードには構文エラーがあります。私はまだ学生ですが、この種の更新がどのように機能するかを説明する助けに大いに感謝します。私は最初の値がselectステートメントから来る必要があることを知っていますか?ここで

は私の現在のMySQL文です:

REPLACE INTO sales (`itemID`, `date`, `qty`, `price`) 
VALUES ([itemID], CURDATE(), [qty], 0.00) 
SELECT itemID FROM item WHERE `sku` = [sku] 
+4

だから、あなたの質問は何ですか? –

+0

ステートメントに構文エラーがあります。私は誰かが私に正しい記述をどうやって作るか教えてくれることを望んでいました。私はこの壁の壁に頭を叩いています。 – psyklopz

答えて

16

あなたが挿入しようとしている同じキーを持つ行がある場合、それはあなたにエラーを与えるのではなく、交換する上で削除されることを除いて、挿入などの作品を交換してください。

あなたは直接の引数を指定することができ、次のいずれか

REPLACE INTO sales(`item_id`, `date`, `qty`, `price`) 
VALUES(15, '2012-01-01`, 5, '120.00') 

またはSELECT使用して指定する:

REPLACE INTO sales(`item_id`, `date`, `qty`, `price`) 
SELECT item_id, date, qty, price FROM sales_to_accept 
WHERE sales_id = 721 

あなたはしかし、1つのクエリの構文の両方のタイプを混在させることはできません。

しかし、SELECTの列として一定の値を加算してからあなたを止めるものは何もない。

REPLACE INTO sales(`item_id`, `date`, `qty`, `price`) 
SELECT item_id, CURDATE(), 5, '74.00' FROM item 
WHERE `sku` = 'something' 
+0

ありがとうございます。それは素晴らしい作品です!これはまさに私が必要としていたものです。 – psyklopz

+0

これに遭遇する将来の人々のための注意の言葉。 REPLACE INTOは、AUTOINCREMENTであらゆる種類の地獄を引き起こします。このクエリは、上記の推奨オプション3を使用してINSERT INTO ON DUPLICATE KEY UPDATEを使用して終了したものです。 – psyklopz

1

あなたがに置き換えると、同じ文の選択をしようとしています。 何らかのプログラムを使用してこれを実行しようとしている場合、または単にMySQLに入力する場合は、値セクションの末尾にある)の後ろにセミコロンを置くと、2つの別々の要求として扱われます。

PHPでこれを実行している場合は、別々の2つのステートメントに分割する必要があります。

REPLACE INTO sales (`itemID`, `date`, `qty`, `price`) 
VALUES ((SELECT itemID FROM item WHERE `sku` = [sku]), CURDATE(), [qty], 0.00) 
+0

これは私の質問ではありません。私は別のステートメントを実行しようとしていない。私は与えられた 'sku'と一致する' item'テーブルの 'itemID'を見つけようとしています。次に、 'item'の他のプロパティを' sales'テーブルに置き換えます。これは単一のクエリでなければなりません。 – psyklopz

+0

したがって、副選択について質問しているので、その更新された照会が有効かどうかを確認してください。 –

+0

ありがとうございます。それは素晴らしい作品です! – psyklopz

関連する問題