10

こんにちは私は次の列を持つ従業員テーブルを持っています

Emp_id, Emp_Name and Mgr_id.

リストするビューを作成しようとしています

Emp_id, Emp_name, Mgr_id and Mgr_name(Employeeテーブルを相互結合することによって)。アウタージョイン、インナージョインなどを試しましたが、うまくいきません。

どんな助けでも大歓迎です。

CREATE TABLE [dbo].[tblEmployeeDetails](
[emp_id] [bigint] NOT NULL, 
[emp_name] [nvarchar](200) NULL,    
[emp_mgr_id] [bigint] NULL, CONSTRAINT [PK_tblEmployeeDetails] PRIMARY KEY CLUSTERED (
[emp_id] ASC )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY] ) ON [PRIMARY]
4

15 に答える 15

21
CREATE VIEW AS
SELECT e1.emp_Id EmployeeId, e1.emp_name EmployeeName, 
       e1.emp_mgr_id ManagerId, e2.emp_name AS ManagerName
FROM   tblEmployeeDetails e1
       JOIN tblEmployeeDetails e2
       ON e1.emp_mgr_id = e2.emp_id

編集:emp_mgr_idがnullの場合、左結合は機能します。

CREATE VIEW AS 
SELECT e1.emp_Id EmployeeId, e1.emp_name EmployeeName,  
       e1.emp_mgr_id ManagerId, e2.emp_name AS ManagerName 
FROM   tblEmployeeDetails e1 
       LEFT JOIN tblEmployeeDetails e2 
       ON e1.emp_mgr_id = e2.emp_id
于 2012-07-11T07:13:09.787 に答える
7
   SELECT b.Emp_id, b.Emp_name,e.emp_id as managerID, e.emp_name as managerName
    FROM Employee b
    JOIN Employee e ON b.Emp_ID = e.emp_mgr_id

これを試してみてください、それはマネージャーを取得するためのそれ自体の参加です:)

于 2012-07-11T07:11:00.843 に答える
4
CREATE VIEW EmployeeWithManager AS 
SELECT e.[emp id], e.[emp name], m.[emp id], m.[emp name] 
FROM Employee e LEFT JOIN Employee m ON e.[emp mgr id] = m.[emp id]

この定義では、左外部結合を使用します。これは、マネージャーIDがNULLであるか、マネージャーが削除されている(アプリケーションで許可されている場合)従業員もリストされ、マネージャーの属性がNULLとして返されることを意味します。

代わりに内部結合を使用した場合は、マネージャーがいる人だけがリストされます。

于 2012-07-11T07:26:15.037 に答える
4
SELECT e1.empno EmployeeId, e1.ename EmployeeName, 
       e1.mgr ManagerId, e2.ename AS ManagerName
FROM   emp e1, emp e2
       where e1.mgr = e2.empno
于 2014-01-22T18:32:29.243 に答える
3

ジェシーが言ったように、自己参加を使用してください:

SELECT 
  e.emp_id
  , e.emp_name
  , e.emp_mgr_id
  , m.emp_name AS mgr_name 
FROM [dbo].[tblEmployeeDetails] e 
LEFT JOIN [dbo].[tblEmployeeDetails] m ON e.emp_mgr_id = m.emp_id
于 2012-07-11T07:13:59.697 に答える
3
    select E1.emp_id [Emp_id],E1.emp_name [Emp_name],
E2.emp_mgr_id [Mgr_id],E2.emp_name [Mgr_name] 
from [tblEmployeeDetails] E1 left outer join
    [tblEmployeeDetails] E2
    on E1.emp_mgr_id=E2.emp_id
于 2012-07-11T07:18:14.183 に答える
3

これを試してください。

SELECT Employee.emp_id, Employee.emp_name,Manager.emp_id as Mgr_Id, Manager.emp_name as Mgr_Name 
FROM tblEmployeeDetails Employee 
LEFT JOIN tblEmployeeDetails Manager ON Employee.emp_mgr_id = Manager.emp_id
于 2012-07-11T07:18:48.900 に答える
2

これを試してください..LEFT JOINテーブル内のnull値を無視するために行う必要があります

SELECT a.emp_Id EmployeeId, a.emp_name EmployeeName,  
       a.emp_mgr_id ManagerId, b.emp_name AS ManagerName 
FROM   tblEmployeeDetails a 
       LEFT JOIN tblEmployeeDetails b
       ON b.emp_mgr_id = b.emp_id
于 2012-07-20T01:58:21.043 に答える
2
TableName :Manager

EmpId   EmpName     ManagerId
1       Monib       4

2       zahir       1

3       Sarfudding  NULL

4       Aslam       3


select e.EmpId as EmployeeId,e.EmpName as EmployeeName,e.ManagerId as ManagerId,e1.EmpName as Managername from Manager e
  join manager e1 on e.ManagerId=e1.empId
于 2014-09-04T14:53:02.540 に答える
1
create table abc(emp_ID int, manager varchar(20) , manager_id int)

emp_ID  manager manager_id
1       abc     NULL
2       def     1
3       ghi     2
4       klm     3
5       def1    1
6       ghi1    2
7       klm1    3

select a.emp_ID , a.manager emp_name,b.manager manager_name
from abc a
left join abc b
on a.manager_id = b.emp_ID

Result:
emp_ID  emp_name  manager_name
1       abc       NULL
2       def       abc
3       ghi       def
4       klm       ghi
5       def1      abc
6       ghi1      def
7       klm1      ghi
于 2016-08-26T16:00:01.400 に答える
0
create view as 
(select 
e1.empno as PersonID,
e1.ename as PersonName,
e2.empno MANAGER_ID,
e2.ename MANAGER_NAME 
from 
employees e1 , employees e2 
where 
e2.empno=e1.mgr)
于 2014-01-21T14:27:55.380 に答える
0
select E1.EmpId,E1.Name,E2.Name as Manager from Employee E1 left join Employee E2 on  E1.ManagerID = E2.EmpId
于 2014-03-28T01:44:33.990 に答える
0

さらに、マネージャーとそのレポートを-でカウントすることもできます。

SELECT e2.ename ,count(e1.ename)  FROM employee_s e1 LEFT OUTER JOIN employee_s e2 
ON e1.manager_id = e2.eid
group by e2.ename;
于 2016-08-14T07:21:42.780 に答える
0
SELECT e1.emp_id, e1.emp_name, e1.mgr_id, e2.emp_name as manager_name

FROM employee e1

JOIN employee e2

ON e1.mgr_id = e2.emp_id

ORDER BY e1.emp_id

*ここに実際の例を含むSQLFiddleへのリンクがあります。 http://www.sqlfiddle.com/#!17/392b5/9

于 2019-01-19T07:21:40.170 に答える
0
select distinct( e1.id), e1.emp_name from employee as e1 
inner join employee as e2 on e1.id = e2.manager_id;
于 2022-02-08T12:06:05.113 に答える