gpt4 book ai didi

mysql - 连接 2 个表,当连接行发生时从第二个表打印数据

转载 作者:行者123 更新时间:2023-11-30 23:30:08 25 4
gpt4 key购买 nike

案例:我有 2 个表,'contracts' 和 'members' 与 contract.id = members.cid 相关联。每一份合约都有一个主要成员和几个次要成员(通常是主要成员的子女和配偶)。主要成员的详细信息(姓名、地址等)存储在表契约(Contract)中,而额外成员的详细信息则保存在表成员中。 (逻辑不好,我知道,但一开始就是一团糟,我需要时间重新设计数据库和网站)

所需的输出:当我对所有契约(Contract)进行批量打印时(比方说,每周五),我还需要为每个成员打印一份契约(Contract)副本,但要在契约(Contract)上打印该成员的详细信息,而不是主要成员。

问题:这如何转化为 mysql 查询?好的,它是一个左连接,但是我怎么说“从表 members 打印数据而不是 contracts 用于连接的行” ?

2 个表中出现的主要字段是 name + surname,这些对于草稿查询示例应该足够了。

示例表和数据:

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,对于所有其他匹配列也是如此。

最佳答案

希望这有效:::

select c1.id, c1.name, c1.surname 
from contracts c1
union
(Select m.id, m.name, m.surname
from
members m left join contracts c on (c.id = m.cid))

关于mysql - 连接 2 个表,当连接行发生时从第二个表打印数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11125498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com