1

このようなテーブル「人」があります

  id  |  firstName  |  lastName  |  ...
-----------------------------------------
  1   | Bill        | Gates      |
  2   | Steve       | Jobs       |
  3   | Linus       | Torvalds   |

そして2番目のテーブル「美徳」はこのように

  id  | person_id | v_key    | v_value
---------------------------------------------
  1   | 1         | OS       | Windows Mobile
  2   | 1         | Company  | Microsoft
  3   | 2         | OS       | iOS
  4   | 2         | Company  | Apple

このようにすべての人の美徳を数えることができます

select a.firstName, a.lastName, count(b.v_key)
  from person a
  left join virtue b on b.person_id = a.id
  group by a.firstName, a.lastName

ここで、「OS」="iOS"、"Company"="Apple" などの美徳のリストを指定した最初のテーブルからすべての人を選択する必要があります。

4

2 に答える 2

0

私が正しく読んだ場合、追加の基準は OS=IOS と Company=Apple だけであり、他のオプションには興味がありません。その場合、次のようなものを使用できます。

select a.firstName, a.lastName from person a
left join 美徳 b on b.person_id = a.id AND (b.v_key = 'OS' AND b.v_value = 'iOS') OR (b.v_key = 'Company' AND b.v_value = 'Apple') a.firstName、a.lastName によるグループ化

OSごと、または会社ごとにそれらをプルする必要がある場合は、それらをパラメーターとして提供することを検討できます。

それはあなたが探しているものですか?

于 2013-10-21T05:24:07.253 に答える