请教个sql语句,

白骨神经 java工程师  2015-08-18 10:36:23
有3张表,
order订单表:
orderId--订单id


payment支付表:
orderId--订单id(如果为单个订单支付就是xxxxxxxxxxx,多个订单支付就是mxxxxxxxxxxxxxx,对应下表的)
paymethod--支付方法


ordersGroup多订单表(这张表就相当于多订单支付的记录):
groupId--联合订单Id--mxxxxxxxxxxxxxxxxx
orderIds--对应订单id--xxxxxxxxxxxxxxxxx,xxxxxxxxxxxxxx(对应order订单表里的orderId)

刚刚写了个sql,联合order和payment表得到paymethod列,但是突然想到,如果为多订单,payment表的orderId为mxxxxxxxxxx时候,order表里的orderId与payment表的orderId不对应,有什么办法能避免这种情况?求大神帮帮忙
...全文
88 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
白骨神经 2015-08-18
引用 3 楼 gukuitian 的回复:
大概可以这样 select paymethod from payment where orderId= case (select groupId from ordersGroup where orderIds like '%参数orderId%') when null then 参数orderId else (select groupId from ordersGroup where orderIds like '%参数orderId%') end;
mysql,我不小心开了2个帖子,刚刚没看到,我去试试,谢谢了。
回复
gukuitian 2015-08-18
大概可以这样 select paymethod from payment where orderId= case (select groupId from ordersGroup where orderIds like '%参数orderId%') when null then 参数orderId else (select groupId from ordersGroup where orderIds like '%参数orderId%') end;
回复
那你就需要写函数去区分了,然后用in 去做筛选 ,或者直接用like去匹配订单,但是这样会效率很低
回复
gukuitian 2015-08-18
得说下是什么数据库啊
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-08-18 10:36
社区公告
暂无公告