在这个查询MYSQL中失败了什么

时间:2011-05-21 16:09:08

标签: mysql sql

以下查询仅在我在表wm_purchased_products.purchased_article_id中有引用时才起作用,但是当它为空时,mysql_num_rows返回0

查询是:

  SELECT (SUM(wm_products_quantities.new_quantity) - SUM(wm_purchased_products.purchased_article_total) ) AS stock_restante, 
         wm_products_wall.nombre, 
         wm_products_wall.detalles, 
         wm_products_wall.price, 
         wm_products_wall.image_full, 
         wm_products_wall.fecha, 
         wm_products_wall.article_hashid
    FROM wm_products_wall,
         wm_products_quantities, 
         wm_purchased_products 
   WHERE wm_products_wall.categoria = '$new_rquery_xp' 
     AND wm_products_wall.article_hashid = wm_products_quantities.hashid_ref 
     AND wm_products_wall.article_hashid = wm_purchased_products.purchased_article_id 
GROUP BY wm_products_wall.article_hashid 
ORDER BY stock_restante ASC

如果表wm_purchased_products.purchased_article_id

中没有记录,如何构建此查询

1 个答案:

答案 0 :(得分:2)

您的代码FROM wm_products_wall, wm_products_quantities, wm_purchased_products表示所有三个表都是INNER JOIN。(也就是说,第一个表中的每一行都连接到第二个表中的每一行,依此类推。)

你可以让wm_products_wall LEFT JOIN与wm_purchased_products,wm_purchased_products也是如此。

SELECT 
(SUM(wm_products_quantities.new_quantity) - SUM(wm_purchased_products.purchased_article_total) ) AS stock_restante, 
wm_products_wall.nombre, wm_products_wall.detalles, wm_products_wall.price, 
wm_products_wall.image_full, wm_products_wall.fecha, 
wm_products_wall.article_hashid
FROM wm_products_wall
LEFT OUTER JOIN wm_products_quantities
  ON wm_products_wall.article_hashid = wm_products_quantities.hashid_ref 
LEFT OUTER JOIN wm_purchased_products
  ON wm_products_wall.article_hashid = wm_purchased_products.purchased_article_id
WHERE wm_products_wall.categoria = '$new_rquery_xp' 
GROUP BY wm_products_wall.article_hashid 
ORDER BY stock_restante ASC