datagrid соединение источника данных sql - PullRequest
0 голосов
/ 28 августа 2010

У меня есть стол, который называется Листья.Поля:

* LeaveID
* PersonID
* ActingPersonID

В таблице Персона у меня есть

* PersonalID
* EmployeeCode
* PersonName

Теперь в таблице данных мне нужно показать,

* PersonEmployeeCode
* PersonName
* ActingPersonEmployeeCode
* ActingPersonName

Сейчас,Я знаю, как написать SQL Join, чтобы заполнить данные.Но проблема в том, что в некоторых случаях не будет действующего лица.В этом случае мне нужно отобразить данные:

* PersonEmployeeCode = 0001
* PersonName = John
* ActingPersonEmployeeCode = -
* ActingPersonName = No acting Person

Теперь я застрял здесь.Как сделать оператор условного соединения?

Мне действительно нужна быстрая помощь по этому вопросу ...

Кодирование базы данных

SELECT     dbo.LeavesManager.leaveID, dbo.LeavesManager.PersonalID, dbo.PersonalDetails.EMPNO, dbo.PersonalDetails.NAMIN,
                      dbo.LeavesManager.actingPersonalID
FROM         dbo.LeavesManager INNER JOIN
                      dbo.PersonalDetails ON dbo.LeavesManager.PersonalID = dbo.PersonalDetails.PersonalID

Возвраты,

1   25  ACA01   Neranjan Manoj  26

2   25  ACA01   Neranjan Manoj  0

3   26  ACA06   A. N. M. K. Waruni  0



SELECT     dbo.LeavesManager.leaveID, dbo.LeavesManager.PersonalID, dbo.PersonalDetails.EMPNO, dbo.PersonalDetails.NAMIN, dbo.LeavesManager.actingPersonalID,
                      PersonalDetails_1.EMPNO AS Expr1, PersonalDetails_1.DESIG
FROM         dbo.LeavesManager INNER JOIN
                      dbo.PersonalDetails ON dbo.LeavesManager.PersonalID = dbo.PersonalDetails.PersonalID INNER JOIN
                      dbo.PersonalDetails AS PersonalDetails_1 ON dbo.LeavesManager.actingPersonalID = PersonalDetails_1.PersonalID

Возвращает,

1   25  ACA01   Neranjan Manoj  26  ACA06   TELE-Arcade Staff

Когда нет действующего лица от имени лица, которое применяет отпуск, пользователь выбирает значение по умолчанию из выпадающего списка, где ActingPersonEmployeeCode = 0 & ActingPersonName = "Нет действующего лица".

Теперь проблема в том, что в таблице PersonalDetails нет реального человека.Таким образом, записи не заполняются для ActingPersonEmployeeCode = 0.

1 Ответ

1 голос
/ 29 августа 2010

Получил ответ

SELECT     dbo.LeavesManager.leaveID, dbo.LeavesManager.PersonalID, dbo.PersonalDetails.EMPNO, dbo.PersonalDetails.NAMIN, dbo.LeavesManager.actingPersonalID, 
                      PersonalDetails_1.EMPNO AS Expr1, PersonalDetails_1.DESIG
FROM         dbo.LeavesManager **LEFT OUTER JOIN**
                      dbo.PersonalDetails ON dbo.LeavesManager.PersonalID = dbo.PersonalDetails.PersonalID **LEFT OUTER JOIN**

                      dbo.PersonalDetails AS PersonalDetails_1 ON dbo.LeavesManager.actingPersonalID = PersonalDetails_1.PersonalID
...