我什至不确定如何为这个问题命名,或者如何为我想要实现的目标寻找类似的问题。
我正在处理两个表。第一个包含其他 2 个表之间的关系。
表 doc_companies
idDoc idCompany contact
1 2 1
1 5 1
1 6 1
1 6 3
idDoc 是将发送给位于不同公司的不同联系人的文档的 ID。令我困惑的是字段 idCompany 和 contact 在同一个表中。
这是表公司
id name1 email1 name2 email2 name3 email3
2 John john@mail.com Jack jack@mail.com Jane jane@mail.com
5 Susan susan@mail.com Pete pete@mail.com Mary mary@mail.com
6 Lily lily@mail.com Bob bob@mail.com Tom tom@mail.com
所以我需要从联系人列中获取数字,然后从中获取数据 使用类似“名称”+联系人的表公司
所以考虑第一个表。如果 idDoc = 1
,这就是我想通过查询得到的结果name email
John john@mail.com
Susan susan@mail.com
Lily lily@mail.com
Tom tom@mail.com
我不知道如何开始这样的查询。我的第一个想法是表之间的内部连接,我想到了这个:
SELECT companies.name1, companies.email1, companies.name2, companies.email2, companies.name3, companies.email.3
FROM companies
INNER JOIN doc_company
ON companies.id = doc_companies.idCompany
WHERE doc_companies.idDoc = 1
但这会返回所有联系人和六列。
我怎样才能得到我需要的结果?也许使用子查询?
最佳答案
SELECT CASE dc.contact
WHEN 1 THEN c.name1
WHEN 2 THEN c.name2
WHEN 3 THEN c.name3
END name
, CASE dc.contact
WHEN 1 THEN c.email1
WHEN 2 THEN c.email2
WHEN 3 THEN c.email3
END email
FROM companies c
INNER JOIN doc_company dc
ON c.id = dc.idCompany
WHERE dc.idDoc = 1
关于mysql - 过滤 2 个表之间的连接结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45110885/