2

私はSQLに比較的慣れていないので、以下は簡単な質問かもしれません。2つの特定のタイプのアドレスが関連付けられている名前のみを返すクエリを作成しようとしています。名前表と住所表があります。それはMYSQLサーバーにあります。

    customer
| id |  name       |
|  1 | john smith  |
|  2 | bob vance   |
|  3 | jane doe    |
|  4 | doug smith  |


                           address
| id |    type   |      street      |   state   |  name_id  |
|  1 |    home   | 123 main street  |     NJ    |     3     |
|  2 |  business | 100 south lane   |     NY    |     3     |
|  3 |    home   | 75 boardwalk way |     CT    |     1     |
|  4 |    home   |  3 cherry lane   |     NY    |     2     |
|  5 |    home   |   15 south way   |     NY    |     4     |
|  6 |  business |   90 west end    |     NY    |     4     |

以下の結果に示されているように、自宅と会社の両方の住所を持つ名前を返したいと思います。

| name     |  type        |    street       |   state   |
| jane doe |    home      | 123 main street |     NJ    |
| jane doe |   business   | 100 south lane  |     NY    |
|doug smith|   home       |  15 south way   |     NY    |
|doug smith|  business    |  90 west end    |     NY    |

テーブルを結合することはできますが、この方法でフィルタリングするのが困難です。どんな援助も大歓迎です!

4

1 に答える 1

5
SELECT ...
FROM ...
WHERE name_id IN (SELECT name_id
                  FROM address
                  WHERE type IN ('home', 'business')
                  GROUP BY name_id
                  HAVING COUNT(DISTINCT(type)) = 2)

http://sqlfiddle.com/#!2/be63a/1

于 2012-07-12T16:21:32.977 に答える