SQL QUERY Выберите сотрудника, который под конкретным боссом

Увлекательный вопрос, у меня есть таблица, как показано ниже

EmployeeID BossID

pic http://img16.imageshack.us/img16/7659/20130430113245.jpg

любая идея создать запрос, чтобы, когда какой-то сотрудник вошел, он будет запрашивать у всех сотрудника под ним и кто его босс

Попробуйте этот запрос

Вы должны использовать CTE, как упомянул Sohail.

WITH DirectReports (bossId, EmpID, Level) AS ( -- Anchor member definition SELECT bossId, empId, 0 AS Level FROM tbl WHERE empId = 2 UNION ALL -- Recursive member definition SELECT e.bossId, e.empId, Level + 1 AS Level FROM tbl e INNER JOIN DirectReports AS d ON e.bossId = d.empId ) -- Statement that executes the CTE SELECT * FROM DirectReports; 

SQL FIDDLE

 | BOSSID | EMPID | LEVEL | -------------------------- | 1 | 2 | 0 | | 2 | 4 | 1 | | 4 | 5 | 2 | | 4 | 6 | 2 | 

Вы должны создать запрос, используя CTE (общее выражение таблицы). Для справки вы можете прочитать Рекурсивные запросы

Ниже приведен пример, который вы можете изменить в соответствии с вашими потребностями, но это поможет.

Это структура таблицы.

CREATE TABLE [dbo]. [Категории] ([Id] [bigint] IDENTITY (1,1) NOT NULL, [CategoryName] varchar NULL, [ParentId] [bigint] NULL)

Это иерархический запрос. Я просто создал представление для него, потому что мне нужно больше фильтровать его в моем сценарии.

  CREATE VIEW [dbo].[CategoriesWithNameHierarchy] AS WITH Categories_Tree AS (SELECT c.id AS 'Id' , 0 AS 'Level', c.CategoryName AS 'CategoryName', cast(c.CategoryName AS varchar(30)) AS 'CNameHierarchy' FROM Categories c WHERE ParentId IS NULL UNION ALL SELECT ChildCategories.Id AS 'Id', (1 + ct.[Level]) AS 'Level', ChildCategories.CategoryName AS 'CategoryName', cast(ct.CNameHierarchy + '>' + ChildCategories.CategoryName AS varchar(30)) AS 'CNameHierarchy' FROM Categories ChildCategories, Categories_Tree ct WHERE ChildCategories.ParentId = ct.Id) SELECT * FROM Categories_Tree 

Надеюсь, это поможет.

Interesting Posts

Сохранение нескольких значений из SQL-запроса для переменной хранимой процедуры

SQL SERVER Удаляет очень большое количество оптимизаций строк

Как найти значение, самое близкое к нулю с помощью SQL Server

SQL-запрос, который возвращает столбцы с таблицей A плюс бит-столбец, который указывает, существует ли PK таблицы A в таблице B

Доступен ли XE Profiler (SSMS 17.3) с помощью SQL Azure

Запрос SQL Server с несколькими местами

Медленные агрегаты CLR SQL Server

Обработка строк для каждой записи в SQL Server и C #

Как разбить 4 столбца, одну строку на 2 столбца, две строки?

Лучшая практика для индексирования внешних ключей на большой таблице

Получение ошибки при подаче параметров в хранимую процедуру

Не удается открыть, так как это версия 852. Этот сервер поддерживает версию 782 и ранее

Предоставить разрешение приложения Asp.net mvc для удаления и создания базы данных SQL Server

Безопасная связь SQL Server

Ошибка запроса SQL Server на ГДЕ

Давайте будем гением компьютера.