соединения таблиц

Slon747

Новичок
соединения таблиц

Имеются 3 таблицы
PHP:
CREATE TABLE `items` (
  `Id` int(4) NOT NULL auto_increment,
  PRIMARY KEY  (`Id`)
);

CREATE TABLE `sales` (
  `Id` int(6) NOT NULL auto_increment,
  `Document` int(4) default NULL,
  `Item` int(4) default NULL,
  `Count` int(4) default NULL
  PRIMARY KEY  (`Id`)
);

CREATE TABLE `documents` (
  `Id` int(4) NOT NULL auto_increment,
  `Type`  int(6) default NULL,
  PRIMARY KEY  (`Id`)
);
В таблице items хранится номенклатура.
В таблице documents хранятся шапки документов.
В таблице sales - табличная часть документов, т.е. строки.

Требуется вывести всю номенклятуру (items), а также вывести столбец,
в котором будет сумма заказанного товара (sales.count).
Делаю так:

PHP:
select items.*, SUM(sales.count)
FROM items
LEFT JOIN sales ON items.Id = sales.Item
LEFT JOIN documents ON sales.Document = documents.Id
GROUP BY items.Id
Вот только суммировать нужно не во всех документах, а только в тех, где
documets.Type IS NULL.
Подскажите пожалуйста, как мне это сделать без вложенного запроса и без объединения?
 

chira

Новичок
Код:
select items.*, SUM(IF(documets.Type IS NULL AND documets.Id IS NOT NULL,sales.count,0)) sales_sum
FROM items
LEFT JOIN sales ON items.Id = sales.Item
LEFT JOIN documents ON sales.Document = documents.Id
GROUP BY items.Id
значение поля documets.Type может быть NULL из-за того, что нет соответствующей записи в таблице documets
проверка documets.Id IS NOT NULL для уверенности, что запись есть и значение Type в этой записи NULL
 
Сверху