Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Многотабличные запросы, помогите пожалуйста  [new]
rudeboy_
Member

Откуда:
Сообщений: 3
Всем доброй ночи! Итак, нужно составить запросы
Ессть две таблицы. Вот это сотрудники:

ID_Emp Идентификатор сотрудника
Name Имя
ID_Job Идентификатор должности
ID_Dep Идентификатор отдела
ID_man Идентификатор руководителя
Salary Зарплата
Born_date Дата рождения
Hire_date Дата поступления на работу

А это - уровни зарплат

Grade Уровень
Losal Минимальная зарплата
Hisal Максимальная зарплата


Сам запросы:
1. Вывести имя сотрудника, его зарплату и максимальную зарплату сотрудника его уровня.
2. Вывести список сотрудников 3-его уровня зарплаты

Никак не могу понять даже способ написания- через подзапрос или через inner join? как вот по зарплате каждого сотрудника найти его уровень?
2 июн 11, 06:40    [10749851]     Ответить | Цитировать Сообщить модератору
 Re: Многотабличные запросы, помогите пожалуйста  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 659
rudeboy_,

В условиях джоина можно писать любые логические выражения, а не только строгое равенство.
...
ON [сотрудники].[Salary] >= [уровни зарплат].[Losal]
AND [сотрудники].[Salary] <= [уровни зарплат].[Hisal]

2 июн 11, 07:04    [10749865]     Ответить | Цитировать Сообщить модератору
 Re: Многотабличные запросы, помогите пожалуйста  [new]
rudeboy_
Member

Откуда:
Сообщений: 3
а если таблицы никак не связаны?? есть таблица сотрудников и отдельно сетка зарплат.
то есть вы хотите сказать что вот это правильно?:

SELECT e.Name, e.Salary, s.Grade, s.Hisal
FROM EMP e
INNER JOIN SALGRADE s on

e.Salary >= SALGRADE.Losal
AND e.[Salary] <= SALGRADE.Hisal

GROUP BY name
2 июн 11, 08:49    [10749988]     Ответить | Цитировать Сообщить модератору
 Re: Многотабличные запросы, помогите пожалуйста  [new]
rudeboy_
Member

Откуда:
Сообщений: 3
а второй запрос такой

SELECT e.Name, e.Salary, s.Grade, s.Hisal
FROM EMP e
INNER JOIN SALGRADE s on

e.Salary >= SALGRADE.Losal
AND e.[Salary] <= SALGRADE.Hisal AND s.grade=3

GROUP BY name

правильно?
2 июн 11, 08:51    [10749996]     Ответить | Цитировать Сообщить модератору
 Re: Многотабличные запросы, помогите пожалуйста  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
Да. Только "GROUP BY name " - не надо.
2 июн 11, 09:18    [10750134]     Ответить | Цитировать Сообщить модератору
 Re: Многотабличные запросы, помогите пожалуйста  [new]
Philin
Member

Откуда: г. Иркутск
Сообщений: 162
Либо, если в таблице уровней зарплат есть пересекающиеся по зарплатам уровни,то первый запрос будет:
SELECT e.Name, e.Salary, max(s.Hisal) Hisal
FROM EMP e
JOIN SALGRADE s ON e.Salary between s.Losal and s.Hisal
GROUP BY e.Name, e.Salary
2 июн 11, 09:26    [10750168]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить