0

頼まれたことをできる限り説明しようと思います。

内部に多くのテーブルがあるDataBase Aへの開発者アクセス権があるとしますが、主に 2 つのテーブルに関心があるとします。1 つ目はAccountsと呼ばれ、2 つ目はCampaignと呼ばれます。さて、Campaign テーブル内には多くのフィールドがありますが、最も重要なのはCampaignTypeIDAccountID です

Accountsテーブル内で最も重要なフィールドは、AccountIDCustomerNumberです。Accountsテーブルには、さまざまなキャンペーンに参加した多くの顧客がいます。したがって、1 人の顧客がそのアカウントでさまざまな CampaignTypeID を持つことができると言えます。

ここで私に求められたのは、CampaignTypeID ごとに 1 つの CustomerNumber (合計 5 種類) を表示することです。(CustomerNumber の重複は許容されると思います) (Ex.)

CampaignTypeID  CustomerNumber
1                   34535
2                   23525
3                   23423
4                   52355
5                   23525

これは私が使用したクエリです:

SELECT top 5 CustomerNumber[Customer Number],  CampaignTypeID , 
 FROM A.Account a
  JOIN A.Campaign c  ON a.AccountID = c.AccountID
  WHERE CampaignTypeID IN (5)
  GROUP BY CustomerNumber, CampaignTypeID 

このクエリの結果は次のようになります: (例)

CampaignTypeID  CustomerNumber
    5                34535
    5                23525
    5                23423
    5                52355
    5                23525

最初は、すべての CampaignTypeID を WHERE 句に挿入しましたが、それでは、繰り返される CampaignTypeID しか返されませんでした。(元。)

CampaignTypeID  CustomerNumber
        3            34535
        3            23525
        4            23423
        5            52355
        5            56678
        3            23525

この時点でわかるように、私の唯一のオプションは、各 CampaignTypeID を 1 つずつ入力することでした。次に、それらをそれぞれスプレッドシートにコピーします。上で示したのは一例ですが、実際には 40 の異なる CampaignTypeID が必要でした。それは非常に退屈な仕事でしたが、もっと効率的にすることができると私は知っています。

可能であれば、このタスクを完了するためのより効率的な方法を知りたいです。

ありがとう!

更新:さて、追加する必要があった小さなこと。CampaignTypeID は連続したものではなく、5、6、7、8、9、10、50、65、110、250、1104、1114 のようなものです。これは物事を複雑にしますか?

スキーマ

CREATE TABLE Accounts 
    (
     AccountID int auto_increment primary key, 
     CustomerID int(20)NOT NULL
    );

INSERT INTO Accounts
(CustomerID)
VALUES
(24),(22),(35),(256),(1246),(11),(224),(55),(664),(773),(234),(568),(245),(986),(768);



CREATE TABLE Campaign 
    (
     CampaignID int auto_increment primary key, 
     CampaignTypeID int(20) NOT NULL,
     CONSTRAINT fk_AccountID FOREIGN KEY(AccountID)
     REFERENCES Accounts(AccountID) 
    );

INSERT INTO Campaign
(CampaignTypeID)
VALUES
(6),(7),(8),(9),(10),(245),(1140),(1150),(1160),(1170),(1180),(1190),(1240),(1250),(1260);
4

1 に答える 1

0
Select
  CampaignTypeID,
  Min(CustomerNumber)
From
  A.Account a
    Inner Join
  A.Campaign c
    On a.AccountID = c.AccountID
Where
  CampaignTypeID Between 1 And 5
Group By
  CampaignTypeID
于 2012-11-16T21:52:30.090 に答える