ホームページ >データベース >mysql チュートリアル >データベース テーブルからすべてのテストに合格した車を選択するにはどうすればよいですか?

データベース テーブルからすべてのテストに合格した車を選択するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-14 10:19:49586ブラウズ

How to Select Cars That Passed All Tests from a Database Table?

データベース クエリ: すべてのテストに合格した車両の特定

このガイドでは、事前に定義された一連のテストを正常に完了した車両をデータベースから効率的に選択する方法を説明します。 すべてのテスト (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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。