MySQL の複数の列にあるキーと値のペアのテーブルで重複する行をソートするにはどうすればよいですか?
P粉115840076
2023-09-05 18:21:40
<p>次のようなキーと値のペアのテーブルがあり、ユーザーがフォーム経由でデータを送信すると、フォーム上の各質問が別の行としてテーブルに追加されます。 <code>Submission_id</code> は各フォーム送信を識別します。 </p>
<pre class="brush:php;toolbar:false;"> ---- --------------- -------------- -----------
| id | submit_id | キー | 値 |
---- --------------- --------------- --------
| 1 | 10 | メーカー | Apple |
| 2 | 10 | モデル | 5s |
| 3 | 10 | ファーストネーム | ポール |
| 4 | 15 | メーカー | Apple |
| 5 | 15 | モデル | 5s |
| 6 | 15 | ファーストネーム | ポール |
| 7 | 20 | メーカー | Apple |
| 8 | 20 | モデル | 5s |
| 9 | 20 | ファーストネーム | アンドリュー |
---- --------------- -------------- -------- </pre>
<p>上記のデータからわかるように、ID 10 と 15 のコミットは同じ値を持ちます (コミット ID が異なるだけです)。これは基本的に、ユーザーが同じフォームを 2 回送信したため、重複していることが原因です。 </p>
<p>重複した送信が順番にまとめて表示されるように、これらのテーブルを並べ替える方法を見つけようとしています。上の表を考慮して、次の結果が得られるクエリを作成しようとしています。 </p>
<pre class="brush:php;toolbar:false;"> ---------------
| 提出 ID |
---------------
| 10 |
| 15 |
| 20 |
--------------- </pre>
<p>そこで、コミットの <code>manufacturer</code>、<code>model</code>、および <code>firstname</code> キーの値が同じかどうかを確認したいと思います。そうである場合、それらはコミット ID を取得し、結果内で互いに隣接して配置されます。実際のテーブルには他のキーもありますが、これら 3 つのキー (製造者、モデル、名) に基づいて重複のみを照合したいと考えています。 </p>
<p>私はこれについて長い間考えており、考えられる解決策を見つけようとしていますが、信頼できるものは何も見つかりませんでした。 </p>
これはキーと値のテーブルではありません。多くの場合、エンティティ属性値テーブル/関係/スキーマと呼ばれます。
問題を見ると、テーブルが通常の第 1 正規形と第 2 正規形で配置されている場合、これは簡単です。値を連結し、それらの値でグループ化し、カウントするだけです....
リーリーまたは接続を使用します....
リーリーまたは、並べ替えと隣接する行の比較を使用します....
リーリーしたがって、解決策は、単純にデータ を通常の関係のように 見せることです....
リーリー連結とシーケンスベースのソリューションが明らかになることを願っています。