что не получается в этом запросе MYSQL - PullRequest
1 голос
/ 21 мая 2011

Следующий запрос работает только тогда, когда у меня есть ссылка в таблице 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 Ответ

2 голосов
/ 21 мая 2011

Ваш код FROM wm_products_wall, wm_products_quantities, wm_purchased_products означает, что все три таблицы INNER JOIN друг с другом. (То есть каждая строка в первой таблице объединяется с каждой строкой во второй таблице и т. Д.on.)

Вы можете разрешить wm_products_wall ВЛЕВО ПРИСОЕДИНИТЬСЯ с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...