ホームページ >データベース >mysql チュートリアル >データベース テーブルからすべてのテストに合格した車を選択するにはどうすればよいですか?
データベース クエリ: すべてのテストに合格した車両の特定
このガイドでは、事前に定義された一連のテストを正常に完了した車両をデータベースから効率的に選択する方法を説明します。 すべてのテスト (A、B、C、D) に合格した passedtest
テーブル内の自動車を識別する必要があるシナリオに焦点を当てます。
IN
ステートメントの制限
IN
ステートメントは、リスト内に値が存在するかどうかを確認するのには便利ですが、この特定のタスクには適していません。 IN
を使用すると、必要なテストの 1 つ だけでも合格した車両が誤って識別されます。 より堅牢なアプローチが必要です。
集約とグループ化の活用
解決策は、集計関数とグループ化を使用することにあります。 COUNT()
関数を使用して、各車両が合格した個別のテスト タイプの数を決定します。 GROUP BY
句は結果を車名ごとに整理し、車ごとに個別のテストをカウントできるようにします。
HAVING
HAVING
句は、グループ化された結果をフィルタリングするために重要です。 これにより、必要なテストの総数 (この例では 4 つ) と等しい異なるテスト タイプの数を持つ自動車を分離できます。
SQL ソリューション
次の SQL クエリにより、望ましい結果が得られます:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4;</code>
このクエリは、指定された 4 つのテストすべてに合格した carname
テーブルから passedtest
のみを効率的に選択します。
包括的なデータのクエリの拡張
すべてのテストに合格した車両に関する追加の詳細を取得するには、ネストされたクエリを利用できます。
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4 );</code>
この強化されたクエリは、cars
テーブル内のすべてのテストに合格したと識別された車両について、passedtest
テーブルからすべての列を取得します。
以上がデータベース テーブルからすべてのテストに合格した車を選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。