一对多(多表多状态查询问题)

风中追風 2016-06-08 03:54:55
table A: id status
table B:id aId status
A表中的status等于状态A B表中没数据时是一种状态
A表中的status等于状态A B表中有数据时是另外一个状态
A表的status还有其它的状态
我现在需要一个sql查出所有A表的状态
...全文
211 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ginnnnnnnn 2016-06-08
  • 打赏
  • 举报
回复
引用 8 楼 u011402153 的回复:
on oi.sid = bi.order_sid 这个我写错了 改了 还是不行
你这个还需要根据不同的状态进行判断翻译啊,比如你的success应该显示成什么,我给你的例子只是处理了taking 的情况而已啊
baidu_35258965 2016-06-08
  • 打赏
  • 举报
回复
select oi.sid ,case when
风中追風 2016-06-08
  • 打赏
  • 举报
回复
on oi.sid = bi.order_sid 这个我写错了 改了 还是不行
风中追風 2016-06-08
  • 打赏
  • 举报
回复
引用 6 楼 KanzakiOrange 的回复:
就是说就是如果B有记录状态会显示不一样吗?试下下面这个语句 select a.id, case when b.id is not null then 'xx' else 'yy' end from A left join B on a.id = b.aid
是这个逻辑 但是SQL语句报错了

select oi.sid case when bi.sid is not null then 'WIN_TAKING' else 'TAKING' end 
 from order_info oi left join bidding bi on oi.sid = b.order_sid
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'case when bi.sid is not null then 'WIN_TAKING' else 'TAKING' end from order_i' at line 1
Ginnnnnnnn 2016-06-08
  • 打赏
  • 举报
回复
就是说就是如果B有记录状态会显示不一样吗?试下下面这个语句 select a.id, case when b.id is not null then 'xx' else 'yy' end from A left join B on a.id = b.aid
风中追風 2016-06-08
  • 打赏
  • 举报
回复
引用 4 楼 KanzakiOrange 的回复:
你这个能列个测试数据做例子和期待结果吗?看你需求有点想象不能
table A: id status table B:id aId status A 1 TAKING 2 SUCCESS 3 TAKING B 1 1 TAKING 期望 结果是显示三条记录 1 待接单 2 成功 3 交付
Ginnnnnnnn 2016-06-08
  • 打赏
  • 举报
回复
你这个能列个测试数据做例子和期待结果吗?看你需求有点想象不能
风中追風 2016-06-08
  • 打赏
  • 举报
回复
别沉啊 求解!
风中追風 2016-06-08
  • 打赏
  • 举报
回复
引用 1 楼 KanzakiOrange 的回复:
select * from A left join B on a.id = b.aid
还是分辨不出状态A到底是两种状态中的那一种
Ginnnnnnnn 2016-06-08
  • 打赏
  • 举报
回复
select * from A left join B on a.id = b.aid

22,294

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧