Распечатать сообщение, если данные не найдены в таблице - PullRequest
0 голосов
/ 13 июня 2019

Запрос на получение имени сотрудника и проекта всех сотрудников. Примечание: у сотрудников без проекта должен быть текст «Проект не найден»

Это две таблицы:

Table1: EmployeeID, FirstName

1 Vikas
2 nikita
3 Ashish
4 Nikhil
5 anish
Table2: EmployeeDetailID, ProjectName

1 Task Track
1 CLP
1 Survey Managment
2 HR Managment
3 Task Track
3 GRS
3 DDS
4 HR Managment
6 GL Managment

Я использовал следующий запрос, чтобы получить имя сотрудника и имя проекта, над которым они работают.

select FirstName,ProjectName  from table1,table2 where EmployeeID=EmployeeDetailID;

Я не знаю, как напечатать сообщение для сотрудника, который не работает ни в одном проекте.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Вы можете использовать (левое) внешнее объединение , чтобы включить записи из таблицы 1, у которых нет соответствующих записей в таблице 2;и затем используйте nvl() или coalesce() для предоставления фиксированного значения для пустых значений имени проекта в строках без совпадения:

select FirstName, coalesce(ProjectName, 'Project not found') as ProjectName
from table1 t1
left join table2 t2 on t2.EmployeeDetailID = t1.EmployeeID;

FIRSTNAME  PROJECTNAME      
---------- -----------------
Vikas      Task Track       
Vikas      CLP              
Vikas      Survey Managment 
nikita     HR Managment     
Ashish     Task Track       
Ashish     GRS              
Ashish     DDS              
Nikhil     HR Managment     
anish      Project not found

Вы можете использовать синтаксис старого стиляс разделенными запятыми именами таблиц и условиями соединения в предложении where, но лучше использовать синтаксис соединения ANSI;и гораздо проще сделать это для внешних объединений, вместо сложного для понимания механизма (+) в Oracle.

0 голосов
/ 13 июня 2019

В этом случае вы можете использовать левое внешнее соединение и функцию NVL ().В качестве примера, пожалуйста, найдите ниже запрос.

SELECT e.firstname,NVL(d.deptname, 'NO DEPT FOUND') FROM employee E LEFT OUTER JOIN department D ON e.deptno = d.deptno;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...