mysql - 从表中选择两个项目作为两个不同的事物

标签 mysql sql

我有两个表:tblOrganizations 和 tblContacts。我有一个带回组织的查询。我还想带回与组织相关的两个不同类型的联系人(主要 = 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

上面的查询从 tblContacts 中获取组织及其联系人的 ReferenceID,作为我想要的两种不同类型的联系人的 PrimaryID 和 secondaryID。但我想要每个联系人有更多字段 - 名字、姓氏、电子邮件地址等

我尝试过类似的东西;

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 等中的任何内容

感谢您的帮助或指点:)

最佳答案

具有所需值的表必须连接两次。在本例中它将是 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

关于mysql - 从表中选择两个项目作为两个不同的事物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36805489/

相关文章:

sql - SQLite:SQL在字段中找不到特定的值

php - 防止SQL盲注

mysql - 我想将我的 java web 应用程序与 mysql 数据库连接但出现错误

php - 按周获取最近 n 个月的数据组 - Laravel

SQL Server 使用通用字段元素生成 XML

sql - 如何提高sqlite like语句的性能

MYSQL:使用字母数字 Id 在特定值之后选择接下来的 100 行

mysql - 如何合并2条sql语句并一次得到结果

php - 是否可以连接这些 MySQL 表 attendee 和 message?

php - 子查询 : select from one table based on matching user ids with team ids and output 2 dimensional array