tAsk 解决方案 sql 查询 复杂的 sql 查询



我有 2 个表成员表和凭证表。 会员有很多代金券,代金券有会员

例如:

  • 会员A有优惠券1,优惠券2
  • 优惠券1有会员A、会员B、C会员。
  • 优惠券2有会员A,会员C
  • 会员B拥有代金券1
  • 会员C有代金券1,代金券
  • 2,代金券3
  • Vocher3 有成员 成员 C, 成员D
  • 会员D有优惠券4
  • 优惠券4 有会员 会员D

如何创建查询以获取所有关系成员具有从成员 A 到成员 D 的凭证,这些凭证与凭证相关

谢谢

这太长了,无法发表评论。

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

请考虑以下设计:

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
SELECT V.voucher, M.member FROM VOUCHER AS V
LEFT OUTER JOIN MEMBER AS M 
ON M.voucher=V.voucher
GROUP BY M.member

目前尚不清楚您在表格中有什么。 您至少可以提供每个表的两行输出吗?

目前尚不清楚您期望的输出是什么。 你能提供你期望的良好输出是什么样子吗?

相关内容

  • 没有找到相关文章

最新更新