現在、2つのテーブルからデータを抽出し、別のテーブルに挿入することを検討しています。 (例えば、理想的なデータで)次のように テーブル:テーブルのコピー/更新用のクエリを作成する
Table1
T1ID(PK) T1Field1
301 2011-07-01
302 2011-07-01
Table2
T2ID(PK) T2Field2 T2Field3 T2Field4
521 301 555 Apple
522 301 666 Pear
Table3 (new table)
T3Field1 T3Field2 T3Field3 T3Field4
301 2011-07-01 555 Apple
301 2011-07-01 666 Pear
探して最も少ない、最も効率的なクエリの次の操作を行うために使用する:
Insert T1ID into T3Field1 + Insert T1Field1 into T3Field2
Update T3Field3 where T3Field1 = T2Field2 (for each) -
*
最初のクエリにmysql insertを使用しただけです。これには、タイムスタンプ情報が含まれているため、最初に実行する必要があります。
* 1対多が存在するため、ここではINNER JOINは不運になり、最初の行のみが挿入されます。
私はすべての結果を選択してから各レコードに対してwhileループ/更新を選択できますが、可能な限り最小限に抑えようとしています。
ロジックに関する2番目の意見が必要です。
おかげで、それには、対応する一致が存在しないのでしかし、
Table1
の第2行が失われます。この方法でクエリを作成しようとしましたが、両方のテーブルから新しいテーブルにデータを取得できました。実際のデータベースははるかに大きく、同じクエリ内のより多くのテーブルからデータを取得する必要があるため、データの欠落による行の値のエラーが現在発生しています。 さらなる問題がある場合は、私は再度投稿します。再度、感謝します。 –それは確かに追加のテーブルとより複雑になるでしょう。正しい順序と外部の結合が問題を解決する可能性があります。 – Sukumar