3

この問題に対するクエリの生成に問題があります。

私はこの小さなテーブルを持っています

Tasks(employee_name, task)

Sample Data:
Tasks
------------------
Joe | taskA
Joe | taskB
Ted | taskA
Jim | taskB
Ray | taskA
Ray | taskB
John| taskA
Tim | taskC

まったく同じ仕事をしている従業員のペアをすべて見つける必要があります。

たとえば、結果セットの上のデータを使用すると、次のようになります。

---------------------
employee1 | employee2
---------------------
  Joe     | Ray
  Ted     | John

データベースに mySQL を使用しています。ありがとう!

4

2 に答える 2

6
select a.employee_name,b.employee_name
from tasks as a, tasks as b
where a.employee_name>b.employee_name
group by a.employee_name,b.employee_name
having group_concat(distinct a.task order by a.task)=group_concat(distinct b.task order by b.task)
于 2013-07-11T19:43:33.347 に答える
0

テーブルをそれ自体に結合し、一方の employee_name が他方よりも大きくなるように選択し、タスクが等しい場所を選択します。

select emp1.employee_name, emp2.employee_name, emp1.task
from tasks emp1
inner join task emp2
on emp1.employee_name > emp2.employee_name
and emp1.task = emp2.task

うまくいけば、REAL PK を持っているか、これは単なるサンプル演習です。ほとんどの企業/システムでは従業員を一意に識別できないため、これは実稼働環境では適切ではありません。

于 2013-07-11T19:34:36.103 に答える