SQL:需要此查询的帮助

时间:2012-08-17 19:28:50

标签: sql if-statement switch-statement case

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

这就是我需要的:提供骨科专家名单及其助手姓名和联系信息。如果医生没有助理,请将“未知”放在姓氏报告上。 个人信息位于名为Person的表格中。这包括联系信息(PhoneNumber)。每位医生都有一个名为PersonID的身份证号码 助理名称(FirstNameLastName)位于名为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没有条目时,我需要它说“UNKNOWN”。

4 个答案:

答案 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