Member 14124697 Ответов: 1

Пожалуйста, дайте мне решение для ниже.


таблица Employee:-
EMP_ID DESINGNATION EMP_NAME
1 МД Сунил
2 часа дня Капил
3 ПЛ Сачин
4 ТЛ Рахул
5 ПГ Аджай

Таблица Supervison_Mapping:-
ИДЕНТИФИКАТОР EMP_ID SUPERVISON_CODE
1 ноль
2 1
3 2
4 2
5 3

Требуйте вывода, Как показано ниже, присоединившись к приведенным выше таблицам.
Идентификатор emp_id
Supervisor_code
Emp_Designation
Emp_Name
Supervisor_Designation
Supervisor_Name

Что я уже пробовал:

выберите.*,б.* от работника, supervisor_mapping Б, где.идентификатор emp_id = б.идентификатор emp_id;

по вышеописанному запросу можно попасть ниже
Идентификатор emp_id
Supervisor_code
Emp_Designation
Emp_Name

но не ниже
Supervisor_Designation
Supervisor_Name

#realJSOP

Ты делаешь это неправильно.

Видишь? Мой ответ соответствует вашему вопросу в отношении полезной инормации.

1 Ответов

Рейтинг:
2

CHill60

Ваш код:

select a.*,b.* from employee a, supervisor_mapping b where a.emp_id = b.emp_id;

Не делайте таких соединений, это очень старомодно, не очень надежно и не рекомендуется. Используйте явные соединения.

Это также хорошая практика, чтобы перечислить столбцы, которые вы хотите, а не использовать *

Попробуйте что-нибудь вроде этого (непроверенное):
SELECT a.Emp_ID,b.Supervisor_code,a.Emp_Designation,a.Emp_Name,c.Emp_Designation AS Supervisor_Designation,c.Emp_Name AS Supervisor_Name
FROM employee a
INNER JOIN supervisor_mapping b on a.emp_id=b.emp_id
INNER JOIN employee c on b.supervision_code=c.emp_id

Это то, что известно как "самосоединение", когда вы снова присоединяетесь к одной и той же таблице. Обратите внимание, что я использовал c.Emp_Name АС Supervisor_Name