SELECT StockID,productName,lastCount,lastAmount FROM (SELECT * FROM stocks WHERE st_date < '2011-04-17' ORDER BY st_date DESC,billCode DESC,itemID DESC) a  GROUP BY productName 
INNER JOIN 
(SELECT productName, SUM(incount),SUM(inAmount),SUM(outcount),SUM(outAmount) FROM stocks WHERE st_date >= '2011-04-17' AND st_date < = '2011-04-19' GROUP BY productname )AS c 
ON a.productName = c.productName;
这两个select语句单独执行都是正常的,可是做了内连接运行就报错,今天第一次用连接,不知道哪出问题了,还请大家帮忙

解决方案 »

  1.   

    SELECT StockID,productName,lastCount,lastAmount FROM 
    (SELECT * FROM stocks WHERE st_date < '2011-04-17' GROUP BY productName ORDER BY st_date DESC,billCode DESC,itemID DESC) a 
    INNER JOIN  
    (SELECT productName,SUM(incount),SUM(inAmount),SUM(outcount),SUM(outAmount) FROM stocks 
    WHERE st_date>='2011-04-17' AND st_date<= '2011-04-19' GROUP BY productname )
    AS c  
    ON a.productName = c.productName
      

  2.   

    如果,把group by 放进去就失去了效果,group by会先执行,即在order by执行之前每个货品的数据就剩下一条了,所以后面的order by就不再起作用了再说这样修改以后报错:Column 'productName' in field list is ambiguous
    有歧义不知道是咋回事?
      

  3.   

    SELECT StockID,productName,lastCount,lastAmount FROM  
    (SELECT * FROM stocks WHERE st_date < '2011-04-17'  ORDER BY st_date DESC,billCode DESC,itemID DESC) a  
    INNER JOIN   
    (SELECT productName,SUM(incount),SUM(inAmount),SUM(outcount),SUM(outAmount) FROM stocks  
    WHERE st_date>='2011-04-17' AND st_date<= '2011-04-19' GROUP BY productname )
    AS c   
    ON a.productName = c.productName
    GROUP BY a.productName
      

  4.   

    代码修改后能执行但是结果只有左边那个select语句的返回结果,右边的select语句无论用左连接还是右连接和内连接都没有作用,还是只显示左边的select的结果是怎么回事啊?
    SELECT StockID,a.productName,lastCount,lastAmount FROM  
    (SELECT * FROM stocks WHERE st_date < '2011-04-17' ORDER BY st_date DESC,billCode DESC,itemID DESC) a  RIGHT JOIN  
     
    (SELECT stocks.productName,SUM(incount),SUM(inAmount),SUM(outcount),SUM(outAmount) FROM stocks  
    WHERE st_date>='2011-04-17' AND st_date<= '2011-04-19' GROUP BY stocks.productname )AS c  
     
    ON a.productName = c.productNameGROUP BY productname
      

  5.   

    右边的select语句无论用左连接还是右连接和内连接都没有作用:解释一下
    你的SQL语句不是标准的SQL语句,你要达到什么目的,举例说明
      

  6.   

    真实谢谢各位了,问问题的同时也学到了不少东西,还有这老兄的问问题的智慧
    把解决代码和大家分享一下
    SELECT * FROM
    (SELECT StockID,a.productName,lastCount AS begincount,lastAmount AS beginAmount 
    FROM  (SELECT * FROM stocks WHERE st_date < '2011-04-17' ORDER BY st_date DESC,billCode DESC,itemID DESC) a  GROUP BY a.productname) b
     JOIN
    (SELECT productName,SUM(incount) AS incount,SUM(inAmount) AS inAmount,SUM(outcount) AS outCount,SUM(outAmount) AS outAmount FROM stocks  
    WHERE st_date>='2011-04-17' AND st_date<= '2011-04-19' GROUP BY productname) c
    JOIN 
    (SELECT lastcount,lastamount,productName FROM (SELECT * FROM stocks  WHERE  st_date <= '2011-04-19' ORDER BY st_date DESC,billCode DESC,itemID DESC) atlast  GROUP BY productName) d
    ON b.productname=c.productname AND b.productname = d.productname