あるSQLデータベーステーブルから別のSQLデータベーステーブルへデータを挿入しようとしています。カタログを作成するために、テーブルのデータをcsvファイルに抽出することを計画しているので、指定した順序で挿入する必要があります。私は私のメインテーブルに50000以上のアイテムがあり、新しいテーブルに約500を抽出したいと思います。指定した順序のSQLテーブルからのINSERT INTO
参照番号の配列を作成する参照番号(ref)を入力するフォームを作成しました。 list.phpで
<form action="list.php" method="post">
<p>List Number <input name="list_no" type="text"></p>
<table align="center" width="50%">
<tr>
<td><input name="item[]" type="text" style="width: 80px"></td>
<td></td>
<td><input name="item[]" type="text" style="width: 80px"></td>
<td></td>
<td><input name="item[]" type="text" style="width: 80px"></td>
<td></td>
<td><input name="item[]" type="text" style="width: 80px"></td>
<td></td>
<td><input name="item[]" type="text" style="width: 80px"></td>
</tr>
</table>
<p>Step 4: Create List.<input name="Submit1" type="submit" value="Create List" /></p>
私は名前のリストと私のデータベースに新しいテーブルを作成するためのコードを作成している...フォームに入力された回数に応じて。私は$ item_list =破を使用しているように、アレイ
$item=$_POST['item'];
私はアイテムが私がフォームに入力されたためである$のデータを知っているに割り当てられたテーブルからマイデータ(「」、$アイテム) ;入力したデータの順序をチェックし、データをカンマで区切って取得するには、$ item_listをエコーします。
マイlist.phpページには、新しいテーブルに項目を入力するためのコード
$insert="INSERT INTO list$list_no (ref, description, price_s)
SELECT ref, description, price_s
FROM stock
WHERE ref IN ($item_list)";
mysql_query($insert) or die(mysql_error());
を使用しています。それは要求されたすべてのアイテムを入力しますが、元のフォームに入力した順番ではなく、refの順に入力するように見えます。
この問題を解決する方法に関するお考えですか?
多くの方々、ありがとうございます!
$insert = sprintf("INSERT INTO list%s (ref, description, price_s)
SELECT ref, description, price_s
FROM stock
WHERE ref IN ('%s')
ORDER BY FIND_IN_SET(ref, '%s')", $list_no, $item_list, $item_list);
EDIT:あなたは本当にあなたのデータベースの設計を変更する必要があり
refはインデックスのようです。csvへの書き込みのためにSELECTクエリにORDER BY節を追加するだけではありませんか? – CBusBus
プライマリキーとは何ですか?あなたのSQLスキーマを投稿できますか? – CompanyDroneFromSector7G
特定の順序で挿入することは意味をなさない。テーブルの行は**ソートされていません**。 –