0

さて、私は複雑なクエリ(少なくとも私にとっては複雑なもの)を書き込もうとしていて、プロの助けが必要です。これは私のデータベース設定です:

テーブル:MakeList

| MakeListId | Make     |
| 1          | Acura    |
| 2          | Chevy    |
| 3          | Pontiac  |
| 4          | Scion    |
| 5          | Toyota   |

テーブル:CustomerMake

| CustomerMakeId | CustomerId | _Descriptor |
| 1              | 123        | Acura       |
| 2              | 124        | Chevy       |
| 3              | 125        | Pontiac     |
| 4              | 126        | Scion       |
| 5              | 127        | Toyota      |
| 6              | 128        | Acura       |
| 7              | 129        | Chevy       |
| 8              | 130        | Pontiac     |
| 9              | 131        | Scion       |
| 10             | 132        | Toyota      |

表:顧客

| CustomerId | StatusId |
| 123        | 1        |
| 124        | 1        |
| 125        | 1        |
| 126        | 2        |
| 127        | 1        |
| 128        | 1        |
| 129        | 2        |
| 130        | 1        |
| 131        | 1        |
| 132        | 1        |

私が終わらせようとしているのはこれです...

望ましい結果セット:

| Make    | CustomerId|
| Acura   | 123       |
| Chevy   | 124       |
| Pontiac | 125       |
| Scion   | 131       |
| Toyota  | 127       |

1つのアクティブな(StatusId = 1) CustomerIdを持つ一意のMakeのリストが必要です。私はいくつかのことをしなければならないGROUP BYsと思いますがJOINS、私はそれを理解することができませんでした。どんな助けでも大歓迎です。質問に十分な情報を提供していない場合はお知らせください。ありがとう!

更新:スクリプトはパフォーマンスが高い必要はありません。テスト目的で1回使用されます。

4

2 に答える 2

2

このようなもの:

select cm._Descriptor,
       min(cu.customerid)
from CustomerMake cm
  join Customer cu on cuo.CustomerId  = cm.CustomerId and cu.StatusId = 1
group by cm._Descriptor

とにかくCustomerMakeテーブルのように完全なmake名を格納しているため、MakeListテーブルは不要と思われるため、省略しまし_Descriptorた(MakeListテーブルの目的は何ですか?CustomerMakeテーブルにFKを格納しませんか? ?)

于 2012-08-21T21:15:12.290 に答える
1

あなたはしたい

(a)customermakeテーブルとcustomermakeテーブルを結合します(b)customer.statusidでフィルターします
(c)customermake._descriptorでグループ化します

RDBMSによっては、グループ関数をcustomer.customeridに明示的に適用して、選択リストに含める必要がある場合があります。どの特定のcustomeridが表示されるかは気にしないので、MINまたはMAXを使用して、本質的に任意の値を選択することができます。

于 2012-08-21T21:11:43.103 に答える