テストリストからすべてのテストに合格した車両を検索します
このタスクでは、「passedtest」テーブルにリストされているすべてのテストに合格した車両を「cars」テーブルから特定する必要があります。単純な IN ステートメントで任意の 1 つのテストに合格した自動車を取得できますが、要件は、各自動車がリスト内のすべて のテストに合格したことを確認することです。
これを達成するには、集計 (GROUP BY、HAVING) と集合論を組み合わせて使用できます。
解決策:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>
説明:
「cars」テーブルのデータを含めるには、次の内部ステートメントを使用できます。
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname) );</code>
代替:
もう 1 つのオプションは、JOIN 操作を使用することです:
<code class="language-sql">SELECT DISTINCT c.carname FROM cars c JOIN PassedTest pt ON c.carname = pt.carname GROUP BY c.carname HAVING COUNT(*) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>
以上がリストされているすべてのテストに合格した車を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。