求一个Sql语句,麻烦帮组!‘

eaqpi 2018-03-26 09:35:21
A表 B表 c表
AID 单位名称 BID 姓名 CID AID BID VALUE
1 肯德基 1 张善 1 1 1 TRUE
2 麦当劳 2 李氏 2 2 1 TRUE
3 小肥羊 3 王五 3 3 1 FALSE
4 大唐宫 4 赵六 4 2 2 TRUE
5 穆桂英 5 钱七 5 2 3 FALSE
6 半岛 6 孙八 6 2 4 TRUE
7 沙县小吃 7 李九 7 3 3 TRUE
8 蜀将烤鱼 8 周十 8 3 4 FALSE
9 顶上牛排 9 吴钩 9 3 6 TRUE
10 克里斯丁 10 郑球 10 4 1 TRUE
11 必胜客 11 3 7 FALSE
-----------------------------------------------------
含义是:
见C表,参数:BID=1,即为张善,Aid=1(肯德基),2(麦当劳),3(小肥羊),且Value=true,是,我希望返回的值 是
4 大唐宫
5 穆桂英
6 半岛
7 沙县小吃
8 蜀将烤鱼
9 顶上牛排
10 克里斯丁
11 必胜客
--------
即:c表中,value为True,表示未被选中,False或不存在于C表中,则表示A中的值可以使用,谢谢!
...全文
765 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2018-03-26
  • 打赏
  • 举报
回复
引用 5 楼 eaqpi 的回复:
谢谢! 请问下,我的人员ID作为查询的参数,应该放在那里?是最后面吗〉? select A.* from table_A A left join (select DISTINCT AID from table_C where value='true') as B on A.AID=B.AID where isnull(B.AID,'')='' and b.bid=@bid  ?
我大概理解你的目标结果对应的逻辑了。你是不是想查询每个姓名所没有配对成功过的单位。而满足“没有配对成功过”的条件,就是C表中和这个姓名有配对,但是VALUE是FALSE,或者和这个姓名完全没有配对过的单位。但是,真如版主在#1说的,C表中10 4 1 TRUE这个条记录,不就说明姓名1和单位4已经配对成功了,那为何单位4还要出现在最终的结果中呢。 如果我的理解是正确的,那试试下面的。

select A.* 
from table_A A
left join
(select DISTINCT AID from table_C where value='true' and BID=@ID) as B
on A.AID=B.AID
where isnull(B.AID,'')=''
eaqpi 2018-03-26
  • 打赏
  • 举报
回复
谢谢! 请问下,我的人员ID作为查询的参数,应该放在那里?是最后面吗〉? select A.* from table_A A left join (select DISTINCT AID from table_C where value='true') as B on A.AID=B.AID where isnull(B.AID,'')='' and b.bid=@bid  ?
RINK_1 2018-03-26
  • 打赏
  • 举报
回复

select A.* 
from table_A A
left join
(select DISTINCT AID from table_C where value='true') as B
on A.AID=B.AID
where isnull(B.AID,'')=''
eaqpi 2018-03-26
  • 打赏
  • 举报
回复
见C表,参数:BID=1,即为张善,Aid=1(肯德基),2(麦当劳),3(小肥羊),且Value=true,是,我希望返回的值 是、 3 小肥羊 (c表中的value是false,不被排除) 4 大唐宫 5 穆桂英 6 半岛 7 沙县小吃 8 蜀将烤鱼 9 顶上牛排 10 克里斯丁 11 必胜客 -------- 即:c表中,value为True,表示未被选中,False或不存在于C表中,则表示A中的值可以使用,谢谢!
eaqpi 2018-03-26
  • 打赏
  • 举报
回复
应为姓名是1的只有12排除了,3是false,所以不被排除,所以3,4-后面都在 如果姓名是2的话,表挤在一起了,sorry,难看了。 表3记录的是被排除的数据,即value=true的话,便排除掉,如果是false,或则不存在,便是存在的数据,会被姓名配组, 比如:姓名id=8的周,C表中不存在他的数据,那么返回的便是A的整表。
二月十六 版主 2018-03-26
  • 打赏
  • 举报
回复
10 克里斯丁 10 郑球 10 4 1 TRUE BID=1 然后AID=4的大唐宫为什么还在里边,而且他的123没在?

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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