1

おはようございます、タイトルをお詫びします...問題を1行に単純化するのに苦労しました。私のデータベース プラットフォームは Teradata です。

次のようなテーブルで作業しています(「t1」と呼びましょう)

+------------+----------------------------------------+
| Service_Id |                Product                 |
+------------+----------------------------------------+
|          1 | Traffic                                |
|          1 | Weather                                |
|          1 | Travel                                 |
|          1 | Audio                                  |
|          1 | Audio Add-on                           |
|          2 | Traffic                                |
|          2 | Weather                                |
|          2 | Travel                                 |
+------------+----------------------------------------+

次の製品に関連する service_id を選択しようとしていますが、次の製品のみに関連しています: 交通、天気、旅行

「Service_Id = 1」はここでは適用されません。これには必要な製品が含まれていますが、それに関連する「オーディオ」製品も含まれているためです。除外する必要があります。私は一連の一時 (揮発性) テーブルを使用してこれを正常に行うことができましたが、それは本当にハッキーに感じられ、より良い方法が必要だと感じています。ご協力ありがとうございます。

4

2 に答える 2

1

Productそれがすべての に固有であると仮定しますservice_ID

SELECT  service_ID
FROM    tableName a
WHERE   Product IN ('Traffic', 'Weather', 'Travel') AND
        EXISTS
        (
            SELECT  1
            FROM    tableName b
            WHERE   a.Service_ID = b.Service_ID
            GROUP   BY b.Service_ID
            HAVING  COUNT(*) = 3 -- <<== total number of products
        )
GROUP   BY service_ID
HAVING  COUNT(*) = 3 -- <<== total number of products
于 2013-07-19T17:08:07.603 に答える