3

私は脳の遅い日を過ごしています...

私が参加しているテーブル:

Policy_Office:

 PolicyNumber    OfficeCode
      1             A
      2             B
      3             C
      4             D
      5             A

Office_Info:

 OfficeCode      AgentCode      OfficeName
      A             123             Acme 
      A             456             Acme
      A             789             Acme
      B             111             Ace
      B             222             Ace
      B             333             Ace
     ...            ...             ....

検索を実行して、オフィス名に関連するすべてのポリシーを返したい。たとえば、「Acme」を検索すると、1と5の2つのポリシーを取得する必要があります。

私の現在のクエリは次のようになります。

SELECT
   *
FROM
   Policy_Office P
   INNER JOIN Office_Info O ON P.OfficeCode = O.OfficeCode
WHERE
   O.OfficeName = 'Acme'

しかし、このクエリは複数の行を返します。これは、2番目のテーブルから複数の一致があるためです。

2行のみを返すクエリを作成するにはどうすればよいですか?

4

2 に答える 2

12
SELECT  DISTINCT a.PolicyNumber
FROM    Policy_Office a
        INNER JOIN Office_Info b
            ON a.OfficeCode = b.OfficeCode
WHERE   b.officeName = 'Acme'

結合についてさらに知識を深めるには、以下のリンクにアクセスしてください。

于 2013-03-01T17:40:16.177 に答える
6

単純結合は、2つのセットのデカルト乗算を返します。最初のテーブルに2 A、2番目のテーブルに3 Aがあり、おそらく6つの結果が得られます。ポリシー番号のみが必要な場合は、それを区別する必要があります。

于 2013-03-01T17:42:04.480 に答える