1

同じテーブルに参加して情報を取得したい。

個人テーブルがあります

PersonId, FirstName, LastName, Address

患者テーブル

患者 ID、個人 ID、責任者 ID

以下は、患者の名、姓、および責任者の名、姓を取得しようとしたクエリです。このために、責任者の名と姓を取得するために、Person テーブルをもう一度結合しました。

しかし、私は多くの重複レコードを取得しました。

SELECT   PAT.PatientId

        ,PER.PersonNumber
        ,PER.FirstName
        ,PER.LastName
        ,RES_PER.FirstName AS ResFirstName
        ,RES_PER.LastName AS ResLastName
        ,PER.Address                

FROM        dbo.Patient AS PAT
INNER JOIN  dbo.Person AS PER
    ON  PAT.PersonId = PER.PersonId
INNER JOIN  dbo.Person AS RES_PER
    ON  PAT.ResponsiblePersonId = PER.PersonId

患者レコードの患者の名、姓、および責任者の名、姓を取得するにはどうすればよいですか?

4

2 に答える 2

1

あなたがする必要があるのはあなたのSQLの最後のビットでPER置き換えることです。RES_PER(つまり、PER.PersonIdはRES_PER.PersonIdになります)。

SELECT   PAT.PatientId
        ,PER.PersonNumber
        ,PER.FirstName
        ,PER.LastName
        ,RES_PER.FirstName AS ResFirstName
        ,RES_PER.LastName AS ResLastName
        ,PER.Address                

FROM        dbo.Patient AS PAT
INNER JOIN  dbo.Person AS PER
    ON  PAT.PersonId = PER.PersonId
INNER JOIN  dbo.Person AS RES_PER
    ON  PAT.ResponsiblePersonId = RES_PER.PersonId
于 2013-03-18T05:36:06.103 に答える
1

基本的に、2 つの依存する列をPersonテーブルに取得するには、テーブルを 2 回結合する必要があります。Patient

SELECT  b.FirstName Patient_FirstName, 
        b.LastName Patient_LastName,  
        b.Address Patient_Address,
        c.FirstName Responsible_Firstname, 
        c.LastName Responsible_LastName, 
        c.Address Responsible_Address
FROM    Patient a
        INNER JOIN Person b
            ON a.PersonID = b.PersonID
        INNER JOIN Person c
            ON a.ResponsiblePersonId = c.PersonID

結合についてさらに詳しく知りたい場合は、以下のリンクにアクセスしてください。

于 2013-03-18T05:27:12.560 に答える