多表关联查询,老大们进来帮小弟我看看

多表关联查询,老大们进来帮我看看
本帖最后由 viphk 于 2015-04-22 11:02:44 编辑
有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'


实在不好表达
可以把有数据问题的地方,把那些举例一些,要包含你写的语句的列