我希望表名无关紧要,因为它们基于我的数据库。我会尽量保持简单。
这就是我需要的:提供骨科专家名单及其助手姓名和联系信息。如果医生没有助理,请将“未知”放在姓氏报告上。
个人信息位于名为Person
的表格中。这包括联系信息(PhoneNumber
)。每位医生都有一个名为PersonID
的身份证号码
助理名称(FirstName
,LastName
)位于名为PersonContact
的表格中。
这是我到目前为止所拥有的:
SELECT Person.FirstName
,Person.LastName
,Person.PhoneNumber
,PersonContact.FirstName
,PersonContact.Lastname
FROM Person
INNER JOIN PersonContact ON person.personID = PersonContactID
如何才能让那些没有助手的医生出现“Unknown
”作为他们助手的名字?
答案 0 :(得分:3)
使用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
答案 1 :(得分:0)
使用LEFT JOIN
FROM PERSON
LEFT JOIN PersonContact ON person.personID = PersonContactID
这将提供无联系可用的空值。
根据您的各种SQL,您可以使用某种形式的NULL替换格式化这些NULLS。 例如,在MSSQL中
ISNULL(PersonContact.FirstName, '(unknown)')
答案 2 :(得分: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
答案 3 :(得分: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