@fruityiceangel

Ms sql, выборка из таблицы, подзапрос — как осуществить?

Есть таблица : EmployesInfo
в ней колонки : emplId, emolName, EmplCar, ChiefId
Нужно выбрать только тех сотрудников, у которых есть назначенный шеф, у назначенного шефа есть автомобиль и шеф должен иметь по крайней мере 3 зависимости (в подчинении начальника находится сотрудник с emplId ).
  • Вопрос задан
  • 2381 просмотр
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `employer`.* 
    FROM `EmployesInfo` AS `employer`
    RIGHT JOIN `EmployesInfo` AS `chief` ON `employer`.`ChiefId` = `chief`.`emplId`
    RIGHT JOIN (SELECT `ChiefId`, COUNT(`ChiefId`) AS `count` 
                FROM `EmployesInfo`
                GROUP BY `ChiefId`
                HAVING `count` >= 3) AS `sub` ON `employer`.`ChiefId` = `sub`.`ChiefId`
    WHERE `chief`.`EmplCar` IS NOT NULL
Ответ написан
@Mulder_ua
Я бы вынес машины и шефов в отдельные таблицы, что бы была 3тья форма но в данном случае это можно сделать так:

SELECT emplId
FROM EmployesInfo
WHERE ChiefId IN (
		SELECT emplId
		FROM EmployesInfo
		--Находим шефов
		WHERE emplId IN (
				SELECT ChiefId
				FROM EmployesInfo
				GROUP BY ChiefId
				--Что бы ему подчинялось >= 3 человека
				HAVING count(1) >= 3
				)
			--Уточняем что шеф не нищеброт и у него есть машина
			AND EmplCar IS NOT NULL
		)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы