案例: 我有 2 个表,'contracts' 和 'members' 与 contract.id = members.cid 绑定。每个合同都有一个主要成员和几个次要成员(通常是主要成员的子女和配偶)。主要成员的详细信息(姓名、地址等)存储在表合约中,而额外成员的详细信息则保存在表成员中。(逻辑不好,我知道,但一开始就是一团糟,我需要时间重新设计数据库和网站)
期望的输出: 当我批量打印所有合同时(比如说,每周五),我还需要为每个成员打印一份合同副本,但要在合同中包含成员的详细信息,而不是主要成员。
问题:
这如何转化为 mysql 查询?好的,它是左连接,但我怎么说“从表中打印数据members
而不是contracts
连接行”?
出现在 2 个表中的主要字段是名称 + 姓氏,这些对于草稿查询示例应该足够了。
示例表和数据:
contracts
-------------------------
id | name | surname |
-------------------------
1 | Tom | Jones |
2 | Jamie | Oliver |
members
--------------------------------
id | cid | name | surname |
--------------------------------
1 | 1 | Jack | Jones |
2 | 1 | Anne | Jones |
3 | 2 | Cathy | Wilson |
所以我想要的结果应该是:
cid | name | surname |
--------------------------
1 | Tom | Jones |
1 | Jack | Jones |
1 | Anne | Jones |
2 | Jamie | Oliver |
2 | Cathy | Wilson |
如果我写
SELECT c.name as name, c.surname as surname, m.name as name, m.surname as surname
FROM contracts c
join members m on c.id = m.cid
我只是以 name 和 name_1、surname 和 surname_1 结束,但我希望所有名称都属于 name 并且所有其他匹配的列也是如此。