我有 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 的凭证,这些凭证与凭证相关
谢谢
这太长了,无法发表评论。
为了正确表示members
和vouchers
之间的多对多关系,你确实需要第三个表,它通常称为连接表。使用这样的表格将大大简化您的设计,从而简化您的查询。
请考虑以下设计:
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
目前尚不清楚您在表格中有什么。 您至少可以提供每个表的两行输出吗?
目前尚不清楚您期望的输出是什么。 你能提供你期望的良好输出是什么样子吗?