日期:2014-05-17  浏览次数:20477 次

多表关联查询的问题
表一:
表名称:Card
字段
card_no,che_no,card_kehu_no,card_jlrq,gongsiMc

表二:
表名称:work_pz_sj
字段
work_no,card_no

表三:
表名称:work_mx_sj
字段
work_no,wxxm_mc

想查询 表一.card_no=表二.card_no and 表二.work_no=表三.work_no

寻求一种高效的查询发放

------解决方案--------------------
因为你还有一列是不重复的,用下面这个吧:
SELECT  a.card_no ,
        a.Card_jlrq ,
        a.card_kehu_mc ,
        a.card_kehu_shouji ,
        a.gongsiNo ,
        a.gongsiMc ,
        MAX(b.work_no) work_no ,
        b.xche_ssje ,
        MAX(c.wxxm_mc) wxxm_mc
FROM    Card a
        LEFT JOIN work_pz_sj b ON a.card_no = b.card_no
        LEFT JOIN work_mx_sj c ON b.work_no = c.work_no
WHERE datediff(month,[card_jlrq],getdate())=0 and a.gongsiNo = '02'
GROUP BY a.card_no ,
        a.Card_jlrq ,
        a.card_kehu_mc ,
        a.card_kehu_shouji ,
        a.gongsiNo ,
        a.gongsiMc ,
        b.xche_ssje 
ORDER BY card_jlrq DESC