2 luchen94 luchen94 于 2016.03.27 14:05 提问

查询多对多sql语句写法 悬赏190 请人帮帮忙!! 急啊、、

一个是众酬表,一个是会员表,还有个这两者的中间表。
会员可以参与多个众酬
众酬可以被多个会员参与

1.会员角度:会员登录,要查询当前所有的众酬列表并且标记哪些众酬当前会员已参与
2.众酬角度:进入某个众酬详情可罗列当前参与此众酬的会员列表

众酬表中间表
会员表

10个回答

enpterexpress
enpterexpress   2016.03.27 16:08
已采纳

这取决于众筹表怎么设计

wangzi_123456
wangzi_123456   2016.03.27 14:44

select *,(select count(1) from 众筹会员表 where id=z.id) as canyu from 众筹表 t

Crabime
Crabime   2016.03.27 14:55

你可以用hibernate映射两个PO之间的实体关系,然后写一个测试类去查询,它会自动帮你写好SQL语句,通常不记得SQL语句怎么写的都是这么干的

Mr__Hacker
Mr__Hacker   2016.03.29 17:11

select * from A where id in B

luchen94
luchen94   2016.03.27 14:07

就这两个sql语句啊 来点人。。

Qmen_Crow
Qmen_Crow   2016.03.27 15:35

1.会员角度:SELECT 会员.会员Id,众筹.众筹Id,会员是否参与(属性名)
FROM 会员表,众筹表
WHERE 会员.会员Id = 中间表.会员Id
AND 中间表.众筹Id = 众筹表.众筹Id;
2.众筹角度:SELECT 众筹.众筹Id,会员.会员Id,众筹详情(相关属性名)
FROM 众筹表,会员表
WHERE 会员.会员Id = 中间表.会员Id
AND 众筹表.众筹Id = 中间表.众筹Id;

(希望对你有帮助!!!)

CSDNXIAOD
CSDNXIAOD   2016.03.30 11:26

SQL查询时间段的语句写法
查询最大值SQL语句写法
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

qq_21045521
qq_21045521   2016.03.31 14:46

会员角度:select * , 已参与=case when 已参与会员id=该会员ID then '已参与' else '未参与' end from 众筹表
众筹角度:select * from 众筹表 where 众筹ID=该众筹ID

wangzi_123456
wangzi_123456   2016.03.27 14:50

select * from 会员表 where id in (select 会员id from 众筹会员表 where 众筹id=你想要查询的众筹id)

hsd2012
hsd2012   2016.03.27 17:12

1.会员角度:
假设会员id=4
众酬表:public_pay
中间表:pay_relation
会员id :uid

SELECT
s.*,IFNULL(t.members,0) AS uid
FROM
public_pay AS s
LEFT JOIN
(SELECT
in_crowdfunded as id,
members
FROM
pay_relation
WHERE members = 4) AS t
ON t.id=s.id;

    解释:如果uid不为0,代表该活动,uid=4的会员参与。

    2.众酬角度,不再细说了。
Csdn user default icon
上传中...
上传图片
插入图片