Многотабличные запросы, помогите пожалуйста

rudeboy_
Дата: 02.06.2011 06:40:25
Всем доброй ночи! Итак, нужно составить запросы
Ессть две таблицы. Вот это сотрудники:

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

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

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


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

Никак не могу понять даже способ написания- через подзапрос или через inner join? как вот по зарплате каждого сотрудника найти его уровень?
Guf
Дата: 02.06.2011 07:04:28
rudeboy_,

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

rudeboy_
Дата: 02.06.2011 08:49:52
а если таблицы никак не связаны?? есть таблица сотрудников и отдельно сетка зарплат.
то есть вы хотите сказать что вот это правильно?:

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
rudeboy_
Дата: 02.06.2011 08:51:35
а второй запрос такой

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

правильно?
Philin
Дата: 02.06.2011 09:18:27
Да. Только "GROUP BY name " - не надо.
Philin
Дата: 02.06.2011 09:26:58
Либо, если в таблице уровней зарплат есть пересекающиеся по зарплатам уровни,то первый запрос будет:
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