一个是众酬表,一个是会员表,还有个这两者的中间表。
会员可以参与多个众酬
众酬可以被多个会员参与
1.会员角度:会员登录,要查询当前所有的众酬列表并且标记哪些众酬当前会员已参与
2.众酬角度:进入某个众酬详情可罗列当前参与此众酬的会员列表
这取决于众筹表怎么设计
就这两个sql语句啊 来点人。。
select *,(select count(1) from 众筹会员表 where id=z.id) as canyu from 众筹表 t
select * from 会员表 where id in (select 会员id from 众筹会员表 where 众筹id=你想要查询的众筹id)
你可以用hibernate映射两个PO之间的实体关系,然后写一个测试类去查询,它会自动帮你写好SQL语句,通常不记得SQL语句怎么写的都是这么干的
1.会员角度:SELECT 会员.会员Id,众筹.众筹Id,会员是否参与(属性名)
FROM 会员表,众筹表
WHERE 会员.会员Id = 中间表.会员Id
AND 中间表.众筹Id = 众筹表.众筹Id;
2.众筹角度:SELECT 众筹.众筹Id,会员.会员Id,众筹详情(相关属性名)
FROM 众筹表,会员表
WHERE 会员.会员Id = 中间表.会员Id
AND 众筹表.众筹Id = 中间表.众筹Id;
(希望对你有帮助!!!)
1.会员角度:
假设会员id=4
众酬表:public_pay
中间表:pay_relation
会员id :uid
SELECT
s.*,IFNULL(t.members,0) AS uid
FROMpublic_pay
AS s
LEFT JOIN
(SELECTin_crowdfunded
as id
,members
FROMpay_relation
WHERE members
= 4) AS t
ON t.id
=s.id
;
解释:如果uid不为0,代表该活动,uid=4的会员参与。
2.众酬角度,不再细说了。
select * from A where id in B
会员角度:select * , 已参与=case when 已参与会员id=该会员ID then '已参与' else '未参与' end from 众筹表
众筹角度:select * from 众筹表 where 众筹ID=该众筹ID