2016-04-23 24 views
0

テーブルが2つあります:tblOrganisationsとtblContactsです。私は組織を取り戻す質問を持っています。私はまた、組織にリンクされた異なるタイプの2つのコンタクト(プライマリ= 1、代替= 2)を戻したいと思っています。しかし、私は複数のフィールドを複数の連絡先のために1つのテーブルから別のものに戻す方法について固執しています。テーブルから2つの異なるものを選択する

これまでのところ、私はReferenceIDをPrimaryIDとSecondaryIDとして取得できます。

SELECT tblOrganisations.* 
     , (SELECT tblContacts.ReferenceID 
      FROM tblContacts 
      WHERE tblOrganisations.ReferenceID = tblContacts.tblOrganisations_ReferenceID 
      AND tblContacts.tblContactTypes_ReferenceID = 1 
     ) AS PrimaryID 
    , ( SELECT tblContacts.ReferenceID 
      FROM tblContacts 
      WHERE tblOrganisations.ReferenceID = tblContacts.tblOrganisations_ReferenceID 
      AND tblContacts.tblContactTypes_ReferenceID = 2 
     ) AS SecondaryID 
FROM tblOrganisations 

上記のクエリは私に組織を取得し、私は連絡先の二つの異なるタイプのためPrimaryIDとSecondaryIDなどtblContactsから自分の連絡先のReferenceID年代。しかし、私は各連絡先のフィールドをもっと必要としています - 名前、姓、電子メールアドレスなど

私はものを試しました。所望の値と

SELECT tblOrganisations.* 
     , 
     (SELECT tblContacts.ReferenceID AS PrimaryID , 
        FirstName AS PrimaryFirstName 
      FROM  tblContacts 
      WHERE  tblOrganisations.ReferenceID = tblContacts.tblOrganisations_ReferenceID 
        AND tblContacts.tblContactTypes_ReferenceID = 1 
     ) 
     , 
     (SELECT tblContacts.ReferenceID AS SecondaryID , 
        FirstName AS SecondaryFirstName 
      FROM  tblContacts 
      WHERE  tblOrganisations.ReferenceID = tblContacts.tblOrganisations_ReferenceID 
        AND tblContacts.tblContactTypes_ReferenceID = 2 
     ) 
FROM tblOrganisations 

しかし、それは実際に任意のヘルプまたはポインタのため

おかげで、PrimaryID、SecondaryIDで何かを持ち帰るPrimaryFirstNameなどはありません:)

答えて

2

の表は、二回参加する必要がありますこの場合、tblcontactsになります。

SELECT 
o.*, 
c1.referenceid AS PrimaryID,c1.firstname as primaryfirstname, 
c2.referenceid AS SecondaryID,c2.firstname as secondaryfirstname 
FROM tblOrganisations o 
JOIN tblContacts c1 on o.ReferenceID = c1.tblOrganisations_ReferenceID 
JOIN tblContacts c2 on o.ReferenceID = c2.tblOrganisations_ReferenceID 
WHERE c1.tblContactTypes_ReferenceID = 1 and c2.tblContactTypes_ReferenceID = 2 
+0

ありがとうございました。私は何時間も悩んでいて、これをグーグルで見つけていました - それはそれほど簡単でした!もう一度、ありがとうございます:) – luke

関連する問題