[英]SQL: Need assistance with this query
我希望表名不要紧,因为它们基于我的数据库。 我将尝试使其尽可能简单。
这就是我所需要的:提供一份骨科专家及其助手的姓名和联系信息。 如果医生没有助手,请在“姓氏”报告上输入“未知”。 个人信息在名为Person
的表中。 这包括联系信息( PhoneNumber
)。 每个医生在一个名为PersonContact
的表中都有一个名为PersonID
助手名称( FirstName
, LastName
)的ID号。
这是我到目前为止的内容:
SELECT Person.FirstName
,Person.LastName
,Person.PhoneNumber
,PersonContact.FirstName
,PersonContact.Lastname
FROM Person
INNER JOIN PersonContact ON person.personID = PersonContactID
如何使没有助手的医生的助手名字出现“ Unknown
”?
编辑:我已经在这里尝试了所有建议,但我对每一行都直接输入“ NULL”或“ UNKNOWN”。 当没有Personperson.Firstname和/或Personcontact.Lastname条目时,我需要说“未知”。
使用LEFT JOIN
获取所有人员和任何可用的联系人,并使用COALESCE
将所有NULL值替换为'UNKNOWN'。
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
使用左联接
FROM PERSON
LEFT JOIN PersonContact ON person.personID = PersonContactID
如果没有联系人可用,它将提供空值。
根据您的SQL种类,您可以使用某种形式的NULL替换来格式化这些NULL。 例如,在MSSQL中
ISNULL(PersonContact.FirstName, '(unknown)')
使用ISNULL()和左外部联接:
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
您想在这里左加入; 所以像这样:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.