Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Помогите разобраться с запросом и count (AlexanderTver) 22/02/2010 - 07:42:01
      Re: Помогите разобраться с запросом и count (bac) 23/02/2010 - 10:32:10
      Re: Помогите разобраться с запросом и count (AlexanderTV) 23/02/2010 - 14:03:31
      Re: Помогите разобраться с запросом и count (bac) 23/02/2010 - 22:35:30
      Re: Помогите разобраться с запросом и count (AlexanderTver) 24/02/2010 - 04:45:39
      Re: Помогите разобраться с запросом и count (AlexanderTver) 24/02/2010 - 06:00:36
      Re: Помогите разобраться с запросом и count (udaff.es) 26/02/2010 - 17:53:45
      Re: Помогите разобраться с запросом и count (AlexanderTver) 27/02/2010 - 01:43:09
      Re: Помогите разобраться с запросом и count (AlexanderTver) 28/02/2010 - 21:29:27
      Re: Помогите разобраться с запросом и count (антон) 02/04/2010 - 14:04:25
      Re: Помогите разобраться с запросом и count (Антон) 02/04/2010 - 16:18:12
      Re: Помогите разобраться с запросом и count (AlexanderTver) 10/04/2010 - 13:11:36
      Re: Помогите разобраться с запросом и count (AlexanderTver) 27/12/2010 - 19:30:55



From: AlexanderTver - 22/02/2010 - 07:42:01
Subject:Помогите разобраться с запросом и count
-----------------
Есть две таблицы. Одна с заказами, вторая привязанная к заказам таблица с товарами.
table_1 : заказы
table_2 : товары

Необходимо посчитать одним запросом количество заказов или товаров по определенному критерию, например по дате.
Заодно хотелось бы что бы этот запрос не нагружал сервак.

Структура таблицы с заказами:
CREATE TABLE `table_1` (
`number_order` INT(10) NOT NULL ,
`date_order` DATE NOT NULL ,
`client_id` INT(10) NOT NULL ,
PRIMARY KEY (`number_order`)
) ENGINE = MYISAM;

Структура таблицы с товарами
CREATE TABLE `table_2` (
`goods_id` INT(10) NOT NULL ,
`number_order` INT(10) NOT NULL ,
`goods_code` INT(10) NOT NULL ,
`goods_cena` INT(10) NOT NULL ,
PRIMARY KEY (`goods_id`)
) ENGINE = MYISAM;

---
Содержимое таблицы с заказами:
number_order, date_order, client_id
-
INSERT INTO `table_1` VALUES
('1', '2010-02-20', '1'),
('2', '2010-02-20', '2'),
('3', '2010-02-21', '3'),
('4', '2010-02-21', '4'),
('5', '2010-02-22', '5'),
('6', '2010-02-22', '6'),
('7', '2010-02-22', '7'),
('8', '2010-02-22', '8'),
('9', '2010-02-22', '9'),
('10', '2010-02-23', '10');
---

Ссодержиме таблицы с товарами
goods_id, number_order, goods_code, goods_cena
-
INSERT INTO `table_2` VALUES
('1', '1', '123', '100'),
('2', '2', '123', '100'),
('3', '3', '123', '100'),
('4', '4', '123', '100'),
('5', '5', '123', '100'),
('6', '6', '123', '100'),
('7', '7', '123', '100'),
('8', '7', '123', '100'),
('9', '7', '123', '100'),
('10', '7', '123', '100'),
('11', '7', '123', '100'),
('12', '7', '123', '100'),
('13', '8', '123', '100'),
('14', '9', '123', '100'),
('15', '10', '123', '100');
-
----------
Необходимо сделать запрос который посчитает количество заказов и товаров за 2010-02-22.
За 2010-02-22 должно выдать
Заказов: 5
Товаров: 10

Если делать два отдельных запроса то работает без проблем.

По отдельности:
Посчитать заказы:
-
SELECT count(`table_1`.`number_order`) AS 'count_orders' from table_1
where `table_1`.`date_order` = '2010-02-22'
-
Результат: 5
-------
Посчитать товары:
-
SELECT count(`table_2`.`number_order`) AS 'count_goods' from table_1
LEFT JOIN `table_2` ON `table_1`.`number_order` = `table_2`.`number_order`
where `table_1`.`date_order` = '2010-02-22'
-
Результат: 10
-------
Посчитать заказы и товары

SELECT
count(`table_1`.`number_order`) AS 'count_orders',
count(`table_2`.`number_order`) AS 'count_goods'
from table_1
LEFT JOIN `table_2` ON `table_1`.`number_order` = `table_2`.`number_order`
where `table_1`.`date_order` = '2010-02-22'
Резултат: 10 10

А надо 5 и 10

В один запрос надо по причине того что бы еще 10 значений таким же образом сунуть в запрос, а не делать 10 запросов.
Заранее спасибо. Бьюсь уже не один день :(



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37795



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |