Запрос не вернул все строки - PullRequest
0 голосов
/ 07 октября 2009

настройка:

create table product_stock(product_id integer, qty integer, branch_id integer);

create table product(product_id integer, product_name varchar(255));

insert into product(product_id, product_name) 
       values(1, 'Apsana White DX Pencil');

insert into product(product_id, product_name) 
       values(2, 'Diamond Glass Marking Pencil');

insert into product(product_id, product_name) 
       values(3, 'Apsana Black Pencil');

insert into product_stock(product_id, qty, branch_id) 
       values(1, 100, 1);

insert into product_stock(product_id, qty, branch_id) 
       values(1, 50, 2);

insert into product_stock(product_id, qty, branch_id) 
       values(2, 80, 1);

мой запрос:

SELECT IFNULL(SUM(s.qty),0) AS stock, 
       product_name 
FROM product_stock s 
 RIGHT JOIN product p ON s.product_id=p.product_id
WHERE branch_id=1 
GROUP BY product_name 
ORDER BY product_name; 

возвращает:

+-------+-------------------------------+ 
| stock | product_name                  | 
+-------+-------------------------------+ 
| 100   | Apsana White DX Pencil        | 
|  80   | Diamond Glass Marking Pencil  | 
+-------+-------------------------------+ 
1 row in set (0.00 sec) 

Но я хочу получить следующий результат:

+-------+------------------------------+ 
| stock | product_name                 | 
+-------+------------------------------+ 
|   0   | Apsana Black Pencil          | 
| 100   | Apsana White DX Pencil       | 
|  80   | Diamond Glass Marking Pencil | 
+-------+------------------------------+ 

Чтобы получить этот результат, какой запрос mysql мне нужно выполнить?

1 Ответ

5 голосов
/ 07 октября 2009

Попробуйте:

   SELECT IFNULL(SUM(s.qty),0) AS stock, 
          product_name 
   FROM product_stock s 
    RIGHT JOIN product p ON s.product_id=p.product_id AND branch_id=1 
   GROUP BY product_name 
   ORDER BY product_name;

Ваш текущий запрос отфильтровывает продукты без соответствующего product_stock в предложении WHERE, превращая внешнее объединение во внутреннее объединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...