首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >询问解决方案sql查询复杂sql查询

询问解决方案sql查询复杂sql查询
EN

Stack Overflow用户
提问于 2019-12-09 00:25:07
回答 2查看 88关注 0票数 0

我有两张桌子会员表和代金券表。会员有许多代金券,代金券有很多会员。

例如:

voucher2

  • Voucher1有memberA,membersB,memberC.

  • Voucher2有memberA,memberC

  • memberB有凭单voucher1,voucher2,voucher3

  • Vocher3有voucher1,memberD

  • MemberD有voucher4

  • Voucher4有memberA

如何创建查询获取所有关系成员从memberA到成员D的凭单

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-12-09 00:37:49

这太长了,不能发表评论。

要正确地表示membersvouchers之间的多对多关系,您确实需要第三个表,它通常称为连接表。使用这样的表将大大简化您的设计,从而简化您的查询。

考虑以下设计:

代码语言:javascript
复制
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)

现在,您可以轻松地生成一个查询,该查询列出所有成员及其相关凭单,例如:

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-12-09 00:32:33

代码语言:javascript
复制
SELECT V.voucher, M.member FROM VOUCHER AS V
LEFT OUTER JOIN MEMBER AS M 
ON M.voucher=V.voucher
GROUP BY M.member

你的桌子里有什么还不清楚。您能至少提供每个表的两行输出吗?

目前还不清楚您期望的输出是什么。你能提供你期望的好的输出结果吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59241131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档