询问解决方案sql查询复杂sql查询
我有2张会员表和凭证表。 会员有多张凭证,凭证有多张会员 例如: 会员A有凭证1,凭证2 凭证1有成员memberA、membersB、memberC。 凭证2有成员memberA,memberC 会员B有凭证凭证1 会员C有凭证凭证凭证1、凭证2、凭证3 Vocher3有成员C、成员D 会员有凭证 Voucher4已成为会员 如何创建查询以获取从memberA到MemberD的所有关联成员都有凭证(按凭证关联) 谢谢 不清楚你桌上有什么。您能否至少为每个表提供两行输出询问解决方案sql查询复杂sql查询,sql,tsql,Sql,Tsql,我有2张会员表和凭证表。 会员有多张凭证,凭证有多张会员 例如: 会员A有凭证1,凭证2 凭证1有成员memberA、membersB、memberC。 凭证2有成员memberA,memberC 会员B有凭证凭证1 会员C有凭证凭证凭证1、凭证2、凭证3 Vocher3有成员C、成员D 会员有凭证 Voucher4已成为会员 如何创建查询以获取从memberA到MemberD的所有关联成员都有凭证(按凭证关联) 谢谢 不清楚你桌上有什么。您能否至少为每个表提供两行输出 不清楚您期望的输出是什么
不清楚您期望的输出是什么。你能提供你期望好的输出是什么样子的吗?这对于评论来说太长了 要正确表示成员和凭证之间的多对多关系,您确实需要第三个表,通常称为连接表。使用这样的表将大大简化您的设计,从而简化您的查询 考虑以下设计:
members
member_id -- primary key
-- other columns: member name, email, address...
vouchers
voucher_id -- primary key
-- other columns
members_vouchers --> junction table
member_id -- foreign key to members(member_id)
voucher_id -- foreign key to voucher(voucher_id)
primary key(member_id, voucher_id)
现在,您可以轻松生成一个查询,列出所有成员及其关联凭证,如:
select m.*, v.*
from members m
inner join members_vouchers mv on mv.member_id = m.member_id
inner join vouchers v on v.voucher_id = mv.voucher_id
请提供样本数据和预期输出。另外,请使用CTE显示您的尝试阅读此内容以供参考。
select m.*, v.*
from members m
inner join members_vouchers mv on mv.member_id = m.member_id
inner join vouchers v on v.voucher_id = mv.voucher_id