0

テーブル名は私のデータベースに基づいているため、問題にならないことを願っています。できるだけシンプルにしようと思います。

これが私が必要としているものです: 整形外科専門医のリストと、そのアシスタントの名前と連絡先情報を提供してください。医師に助手がいない場合は、姓のレポートに「不明」と記入してください。個人情報は、 というテーブルにありますPerson。これには、連絡先情報 ( PhoneNumber) が含まれます。PersonID 各医師にはアシスタント名 ( FirstName、 )という ID 番号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 のエントリがない場合、「UNKNOWN」と言う必要があります。

4

4 に答える 4

3

を使用しLEFT JOINて、すべての個人と利用可能な連絡先を取得し、COALESCENULL値を「不明」に置き換えるために使用します。

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

LEFTJOINを使用する

FROM PERSON
LEFT JOIN PersonContact ON person.personID = PersonContactID 

これにより、連絡先がない場合にnullが提供されます。

SQLの種類に応じて、何らかの形式のNULL置換を使用してこれらのNULLをフォーマットできます。たとえば、MSSQLの場合

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

ISNULL()とLEFTOUTERJOINを使用します。

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 に答える