2016-04-23 2 views
0

У меня есть две таблицы: tblOrganisations и tblContacts. У меня есть запрос, который возвращает организации. Я также хочу вернуть два контакта разных типов (primary = 1, alternate = 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 

Этот запрос получает мне организацию, и идентификаторСсылки о своих контактах с tblContacts как PrimaryID и SecondaryID для двух различных типов контактов я хочу. Но я хочу больше полей для каждого контакта - FirstName, LastName, EmailAddress и т. Д.

Я пробовал такие вещи;

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

Смежные вопросы