0

我希望表名无关紧要,因为它们基于我的数据库。我会尽量保持简单。

这就是我需要的:提供骨科专家名单及其助手的姓名和联系信息。如果医生没有助手,请在姓氏的报告中填写“未知”。个人信息位于名为 的表中Person。这包括联系信息 ( PhoneNumber)。每个医生都有一个 ID 号,叫做PersonID Assistant name ( FirstName, LastName) 是在一个叫做的表中PersonContact

这是我到目前为止所拥有的:

SELECT Person.FirstName
    ,Person.LastName
    ,Person.PhoneNumber
    ,PersonContact.FirstName
    ,PersonContact.Lastname
FROM Person
INNER JOIN PersonContact ON person.personID = PersonContactID

我怎样才能让没有助手的医生出现Unknown在他们的助手名字中的“”?

编辑:我在这里尝试了每一个建议,但每一行我都得到了直接的“NULL”或“UNKNOWN”。当没有 Personcontact.Firstname 和/或 Personcontact.Lastname 的条目时,我需要它说“未知”。

4

4 回答 4

3

使用 aLEFT JOIN获取所有人员和任何可用的联系人,并使用COALESCE'UNKNOWN' 替换任何 NULL 值。

Select Person.FirstName, Person.LastName, Person.PhoneNumber, 
    COALESCE(PersonContact.FirstName, 'UNKNOWN') AS FirstName,
    COALESCE(PersonContact.Lastname, 'UNKNOWN') AS LastName
From Person
LEFT OUTER Join PersonContact
    On person.personID = PersonContactID
于 2012-08-17T19:32:11.390 回答
0

使用左连接

FROM PERSON
LEFT JOIN PersonContact ON person.personID = PersonContactID 

这将在没有联系人可用的地方提供空值。

根据您的 SQL 种类,您可以使用某种形式的 NULL 替换来格式化这些 NULL。例如,在 MSSQL 中

ISNULL(PersonContact.FirstName, '(unknown)')
于 2012-08-17T19:31:53.080 回答
0

使用 ISNULL() 和 LEFT OUTER JOIN:

SELECT Person.FirstName     
,isnull(Person.LastName, 'Unknown') as LastName
,Person.PhoneNumber     
,PersonContact.FirstName     
,PersonContact.Lastname 
FROM Person LEFT OUTER JOIN PersonContact ON person.personID = PersonContactID 
于 2012-08-17T19:33:18.990 回答
0

你想在这里左加入;所以是这样的:

Select Person.FirstName,
       Person.LastName,
       Person.PhoneNumber,
       ISNULL(PersonContact.FirstName, 'Unknown') AS FirstName,
       ISNULL(PersonContact.Lastname, 'Unknown') AS LastName
From Person LEFT OUTER Join PersonContact
      On person.personID = PersonContactID
于 2012-08-17T19:33:19.367 回答