0

現在、まったく同じ3つの個別のテーブルに保存されている3つの個別のクイズからのクイズの結果があるため、この構造にはquiz_results_1、quiz_results_2、およびquiz_results_3があります。

ユーザー名| quest1 | quest2 | quest3 | quest4 | quest5 | quest6 | quest7 | quest8 | quest9 | quest10 | 完了

これらのテーブルを1つのテーブルにマージし、quiz_idを含めて、どの結果がどのクイズに対応するかを特定したいと思います。

quiz_id | ユーザー名| quest1 | quest2 | quest3 | quest4 | quest5 | quest6 | quest7 | quest8 | quest9 | quest10 | 完了

このクエリを使用して、ユーザー名を主キーとして、関連するテーブルを更新できます。

mysql_query("INSERT INTO quiz_results_1 (quest1,quest2,quest3,quest4,quest5,quest6,quest7,quest8,quest9,quest10,username‌​,complete) VALUES $queryData ON DUPLICATE KEY UPDATE quest1=VALUES(quest1),quest2=VALUES(quest2),quest3=VALUES(quest3),quest4=VALUES(‌​quest4),quest5=VALUES(quest5),quest6=VALUES(quest6),quest7=VALUES(quest7),quest8=‌​VALUES(quest8),quest9=VALUES(quest9),quest10=VALUES(quest10),complete=VALUES(comp‌​lete)");

1つのテーブルのみを使用して、行が存在しない場合は挿入するか、ユーザー名とquiz_idが存在する場合は更新します。

どんな助けでもいただければ幸いです。

4

1 に答える 1

0

3 つのクイズに 3 つのテーブルを用意するのは、あまり良い設計ではありません。

したがって、1 つのテーブルのみを使用するという選択は適切に思えますが、主キーを - に変更する必要があります。これにより、ステートメントの問題(quiz_id, username)も解決されます。UPDATE

または、ユーザーごとにクイズの異なるバージョン/履歴を保存する場合は、主キーを次のように変更します。(quiz_id, username, complete)

于 2012-05-28T21:52:44.403 に答える