多表关联查询,老大们进来帮小弟我看看
多表关联查询,老大们进来帮我看看
有A , B两个表,
A表有字段user_id ,B表有字段fid
我现在是要查询显示A表中的记录,条件是A表user_id字段值不等于B表fid字段的值的记录
两个表名不同怎么关链呢?这个SQL语句应该怎么写?
------解决思路----------------------
把#8的语句格式化一下
要对所有的任务发起人都检查61是否完成过任务,要么去掉 TOP 1,要么用下面的 NOT EXIST 判断
------解决思路----------------------
实在不好表达
可以把有数据问题的地方,把那些举例一些,要包含你写的语句的列
有A , B两个表,
A表有字段user_id ,B表有字段fid
我现在是要查询显示A表中的记录,条件是A表user_id字段值不等于B表fid字段的值的记录
两个表名不同怎么关链呢?这个SQL语句应该怎么写?
------解决思路----------------------
把#8的语句格式化一下
SELECT *
FROM fs_desktop
WHERE Datediff(DAY,qt_fbsj,Getdate()) < 3
AND qt_sr > 0
AND user_id NOT IN (-- 你这里只取了61完成的最后一个任务,这个任务的发起人
-- 所有 fs_desktop 记录中只排除了一个任务发起人
SELECT TOP 1 fid
FROM fs_desktop_log
WHERE Datediff(DAY,tytime,Getdate()) < qt_jgts
AND qt_lx != '3G手机单'
AND txtzt = '已完成'
AND user_id = '61'
ORDER BY lid DESC)
要对所有的任务发起人都检查61是否完成过任务,要么去掉 TOP 1,要么用下面的 NOT EXIST 判断
SELECT *
FROM fs_desktop
WHERE Datediff(DAY,qt_fbsj,Getdate()) < 3
AND qt_sr > 0
NOT EXISTS (
SELECT *
FROM fs_desktop_log
WHERE fid = fs_desktop.user_id
AND Datediff(DAY,tytime,Getdate()) < qt_jgts
AND qt_lx != '3G手机单'
AND txtzt = '已完成'
AND user_id = '61'
ORDER BY lid DESC)
------解决思路----------------------
--我的猜测,这个应该是查询出 会员61这段时间完成的任务
--这些都是小于间隔天数的,我想,这些应该都是 指定的时候内不能再看到的某会员的id
--没明白为什么还要取最新
select fid from Fs_Desktop_log
where datediff(day,tytime,getdate()) < qt_jgts
and qt_lx!='3G手机单'
and txtzt='已完成' and user_id='61'
实在不好表达
可以把有数据问题的地方,把那些举例一些,要包含你写的语句的列