2

ID の主キー列と、人を参照する同じテーブルへの参照である、supervisorID という列を持つ従業員というテーブルがあります。スーパーバイザー ID を、ID の代わりに参照している人の名前として表示したいと考えています。

テーブルの従業員から * を選択したいのですが、SupervisorID を同じテーブルの個人名として参照します。

4

3 に答える 3

9
SELECT e.ID, e.name AS Employee, s.name AS Supervisor 
FROM employee e 
  INNER JOIN employee s 
  ON s.ID = e.supervisorID 
ORDER BY e.ID;

これをテストする方法の詳細は次のとおりです。

mysql> CREATE TABLE employee (ID INT NOT NULL AUTO_INCREMENT, supervisorID INT NOT NULL DEFAULT '1', name VARCHAR(48) NOT NULL, PRIMARY KEY (ID));
Query OK, 0 rows affected (0.01 sec)


mysql> INSERT INTO employee VALUES (1, 1, "The Boss"), (2,1, "Some Manager"), (3,2, "Some Worker"), (4,2, "Another Worker");
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0


mysql> SELECT e.ID, e.name AS Employee, s.name AS Supervisor
FROM employee e INNER JOIN employee s
ON s.ID = e.supervisorID ORDER BY e.ID;
+----+----------------+--------------+
| ID | Employee       | Supervisor   |
+----+----------------+--------------+
|  1 | The Boss       | The Boss     |
|  2 | Some Manager   | The Boss     |
|  3 | Some Worker    | Some Manager |
|  4 | Another Worker | Some Manager |
+----+----------------+--------------+
4 rows in set (0.01 sec)

mysql> 
于 2012-07-16T15:58:53.933 に答える
0

何かのようなもの:

SELECT e.name as 'employee name', supervisors.name as 'supervisor name'
FROM employee e
INNER JOIN employee supervisors ON e.ID = supervisors.supervisorID
于 2012-07-16T15:46:52.033 に答える
0

ID に基づいて自己結合を行う

select e.*, s.name
from 
  employee e
  inner join employee s
    on e.supervisorid = s.id
于 2012-07-16T15:46:55.753 に答える