rs.Open "SELECT SUM(Blade_draw.Draw_num) AS drawnumsum, Blade_draw.Blade_type, " & _
"Blade_store.Num " & _
"FROM Blade_draw FULL OUTER JOIN " & _
"Blade_store ON Blade_draw.Blade_type = Blade_store.Blade_type " & _
"WHERE (DATEDIFF(d, '2005-04-27', Blade_draw.Draw_date) >= - 8) AND (DATEDIFF(d, " & _
"'2005-04-27', Blade_draw.Draw_date) <= - 1) " & _
"GROUP BY Blade_draw.Blade_type, Blade_store.Num ", cn此查询运行后如果DATEDIFF限定范围内的BLADE_DRAW表中不包含BLADE_STORE中BLADE_TYPE的某个值,就无法在查询结果中得到等于这个BLADE_TYPE的NUM值,我希望在我的查询结果中,如果BLADE_DRAW表中不包含BLADE_STORE中相同的BLADE_TYPE,则查询结果中得到等于这个BLADE_TYPE的NUM值为零。不知道我表述得是否清楚,请帮忙!!!

解决方案 »

  1.   

    试试:
    rs.Open "SELECT SUM(Blade_draw.Draw_num) AS drawnumsum, Blade_draw.Blade_type, " & _
    "Blade_store.Num " & _
    "FROM Blade_store Left JOIN Blade_draw " & _
    "ON Blade_draw.Blade_type = Blade_store.Blade_type " & _
    "WHERE (DATEDIFF(d, '2005-04-27', Blade_draw.Draw_date) >= - 8) AND (DATEDIFF(d, " & _
    "'2005-04-27', Blade_draw.Draw_date) <= - 1) " & _
    "GROUP BY Blade_draw.Blade_type, Blade_store.Num ", cn
      

  2.   

    应该是:
    rs.Open "SELECT SUM(Blade_draw.Draw_num) AS drawnumsum, Blade_store .Blade_type, " & _
    "Blade_store.Num " & _
    "FROM Blade_store Left JOIN Blade_draw " & _
    "ON Blade_draw.Blade_type = Blade_store.Blade_type " & _
    "WHERE (DATEDIFF(d, '2005-04-27', Blade_draw.Draw_date) >= - 8) AND (DATEDIFF(d, " & _
    "'2005-04-27', Blade_draw.Draw_date) <= - 1) " & _
    "GROUP BY Blade_draw.Blade_type, Blade_store.Num ", cn
      

  3.   

    left join, right join我都曾经试过,不行!
    忘了告诉各位,我使用sql server2000 数据库
      

  4.   

    SELECT ISNULL(SUM(B.Draw_num),0) AS drawnumsum, B.Blade_type, A.Num 
    FROM Blade_store A 
    INNER JOIN (
        SELECT Draw_num, Blade_type 
        FROM Blade_draw
        WHERE (DATEDIFF(d, '2005-04-27', Draw_date) >= - 8) 
            AND (DATEDIFF(d,'2005-04-27', Draw_date) <= - 1)
    ) B ON B.Blade_type = A.Blade_type 
    GROUP BY B.Blade_type, A.Num