0

2 つのテーブルを持つ SQL データベースがあります。

クライアント

ClientID
ClientName
ClientBirthdate

住所

ClientID
Addressline1
Addressline2
Telephone1
Telephone2

クライアントが複数のアドレスを持つ可能性があるため、ClientID はアドレス テーブル内で一意の値ではありません。私の問題は、すべての一意の電話番号にテキストメッセージを送信したいということです。Telephone1 と Telephone2 は両方とも空である可能性があるため、基本的に、クライアントが固有の電話番号をいくつ持っているかはわかりません。私が今それらに参加すると、次のようになります。

ClientID  | ClientName | Telephone1 | Telephone2
------------------------------------------------
Client001 | James      | 12345      | 22312
Client001 | James      | 12345      | 
Client002 | Alfred     |            | 11111
Client002 | Alfred     | 11111      | 
Client002 | Alfred     | 22222      | 

私が欲しいのは次のようなものですが:

ClientID  | ClientName | Number1    | Number2
----------------------------------------------
Client001 | James      | 12345      | 22312
Client001 | Alfred     | 11111      | 22222

現在、これを達成する方法がわかりません。誰でも問題に光を当てることができますか?

よろしくお願いします。

ジェームズ。

編集: データベースは既に存在し、既にいっぱいです。データベースの構造を変更することはできません。SELECT クエリしか実行できません。

4

2 に答える 2

0

これが私の提案する解決策です(問題を正しく理解していれば):

SELECT DISTINCT CLIENTID, 
                CLIENTNAME, 
                TELEPHONE 
FROM   (SELECT T1.CLIENTID, 
               T1.CLIENTNAME, 
               T2.TELEPHONE1 AS Telephone 
        FROM   CLIENT T1 
               INNER JOIN (SELECT CLIENTID, 
                                  TELEPHONE1 
                           FROM   ADDRESS 
                           WHERE  TELEPHONE1 IS NOT NULL)T2 
                       ON T1.CLIENTID = T2.CLIENTID 
        UNION 
        SELECT T1.CLIENTID, 
               T1.CLIENTNAME, 
               T2.TELEPHONE2 AS Telephone 
        FROM   CLIENT T1 
               INNER JOIN (SELECT CLIENTID, 
                                  TELEPHONE2 
                           FROM   ADDRESS 
                           WHERE  TELEPHONE2 IS NOT NULL)T2 
                       ON T1.CLIENTID = T2.CLIENTID)T 

SQL Fiddleで完全な例を見つけることができます。
これについてさらに質問がある場合はお知らせください。

于 2013-07-29T15:20:01.753 に答える
-1

どうですか

select distinct ClientID, ClientName, Number1  
  from ...  
union
select distinct ClientID, ClientName, Number2
  from ...  
  where Number2 is not null    
于 2013-07-29T15:18:03.230 に答える