繁体   English   中英

SQL:此查询需要帮助

[英]SQL: Need assistance with this query

我希望表名不要紧,因为它们基于我的数据库。 我将尝试使其尽可能简单。

这就是我所需要的:提供一份骨科专家及其助手的姓名和联系信息。 如果医生没有助手,请在“姓氏”报告上输入“未知”。 个人信息在名为Person的表中。 这包括联系信息( PhoneNumber )。 每个医生在一个名为PersonContact的表中都有一个名为PersonID助手名称( FirstNameLastName )的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM