Задавайте вопросы, мы ответим
Вы не зашли.
Помогите новичку,дали решить задачку,все ломаю голову никак не найду решение.Есть 2 таблицы workers и departments примерно такого вида:
id name id_dep
1 fio1 1
2 fio2 1
3 fio3 2
4 fio4 3
5 fio5 1
6 fio6 2
7 fio7 1
id_dep dep_name
1 отдел продаж
2 отдел закупок
3 бухгалтерия
какой надо составить запрос,чтобы вывести отдел в котором работают более 3 сотрудников?
заранее спасибо)
Неактивен
Как вариант:
Неактивен
deadka написал:
Как вариант:
select * from departments d where (select count(*) from workers where id_dep = d.id_dep) >= 3;
Или (если достаточно вывести только id департамента)select id_dep from workers group by id_dep having count(*)>=3;
Если же нужно полностью, то как-то так:SELECT d.* FROM departments d JOIN ( select id_dep from workers group by id_dep having count(*)>=3 ) as need_departments USING(dep_id);
спасибо большое!!!вы не дали моему мозгу взорваться от безысходности) можно только объяснить,что означает d в запросе?
Неактивен
d - это алиас, переименовывание таблицы departments. В данном случае нужен для того того, чтобы во внутреннем запросе мы ориентировались на конкретную строку во внешнем.
Иногда еще пишут departments as d, но можно и так - departments d.
Неактивен
deadka написал:
d - это алиас, переименовывание таблицы departments. В данном случае нужен для того того, чтобы во внутреннем запросе мы ориентировались на конкретную строку во внешнем.
Иногда еще пишут departments as d, но можно и так - departments d.
я уже начинал догадываться) спасибо за разъяснения! последнее что непонятно,зачем в последнем варианте с джоином нужно d.* разве нельзя просто * ?
Неактивен
Если бы мы выбирали из одной таблицы, то наверное можно и *. Но тут же JOIN - мы соединяем две таблицы - в данном случае таблицу departments и выборку ID тех департаментов, в которых трудится больше трех человек. Поэтому интерпретатор SQL выдаст не тот результат, что ожидается, если написать просто *.
Ну а вообще * лучше не использовать, а перечислять те поля, которые нужны.
Неактивен
deadka написал:
Если бы мы выбирали из одной таблицы, то наверное можно и *. Но тут же JOIN - мы соединяем две таблицы - в данном случае таблицу departments и выборку ID тех департаментов, в которых трудится больше трех человек. Поэтому интерпретатор SQL выдаст не тот результат, что ожидается, если написать просто *.
Ну а вообще * лучше не использовать, а перечислять те поля, которые нужны.
еще раз спасибо!
Неактивен