0

誰かが助けてくれることを願っています...

私は魚の漁獲量を含み、各釣り人の個人的なベストを記録する2つのテーブルを持っています。私が今やったことは、増え続けるリストにさらに多くの種を追加することです。

これで、古いデータベース(catches_old)をバックアップし、新しいテーブル(catches)を作成しました。

キャッチでは、すべての種がゼロに設定されています。

一意のレコードを取得する唯一の方法は、FishNameとAnglerを一緒に使用することです。

必要なのは、重みがゼロより大きいかどうか、つまりレコードがあるかどうかを確認するための単純なコードです。次に、古い詳細でレコードを更新します。

私は複数の方法を試しましたが、惨めに失敗しました。

テーブルOld(Specie、FishNm、Position、Fisherman、lb、oz、dr、Drams、PegName、Date)テーブルNewは同じです。

テーブルOldには-キャッチからの古いレコードが含まれます。新しいテーブルは基本的に、キャッチする魚の名前が追加されたすべてのレコードのリセットです。

テーブルNewにはすべての魚の名前が含まれ、0ドラムにリセットされます。

Table Oldは、過去の漁獲量の漁獲記録でTableNewを更新する必要があります。古いテーブルでまだキャッチされていないキャッチは、転送する必要はなく、古いキャッチだけです。

サンプルデータ-(正確なドラム計算ではありません笑)

Carp - Wobbles - 2 - David Williams - 12 - 4 - 6 - 897 - Willow Island - 21/05/1999  
Carp - Fanta - 1 - David Williams - 14 - 7 - 9 - 900 - Bay of Dreams - 14/05/2004  
Goldfish - Harry - 1 - Fred Ball - 1 - 1- 2 - 258 - Willow Island - 12/05/2010  
Goldfish - Whipper - 2 - - 0 - 0- 0- 0- -
Goldfish - Harriet - 3 - David Williams - 0 - 15 - 2 - 251 - The Fair - 23/09/2012

新しいコード-2つの一意のフィールドに内部結合を使用します。失敗しているので、これは問題なく動作するはずですか?

UPDATE NewTable  
INNER JOIN OldTable  
    ON NewTable.Fishname = OldTable.Fishname AND NewTable.Angler = OldTable.Angler
SET NewTable.Weight = OldTable.Weight
4

1 に答える 1

0

古いデータからデータを取得して新しいデータに挿入する場合は、選択ステートメントで挿入クエリを使用します。一致するすべてのレコードが挿入されます。必ずしも php を使用する必要はありません。mysql クエリを使用するだけです。

INSERT INTO NewTableName (Field1, Field2, Field3, Weight)
SELECT Field1, Field2, Field3, Weight)
FROM OldTableName
WHERE Weight > 0

フィールドの順序は一致する必要があることに注意してください。

于 2013-03-15T18:19:05.340 に答える