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




MySQL.RU - Webboard



Вернуться
Можно ли сделать выборку одним запросом? (Михаил) 30/01/2014 - 23:11:17
      Re: Да легко... (Akina) 31/01/2014 - 09:21:41
      Re: Пожалуйста (Михаил) 31/01/2014 - 10:39:24
      Re: Начнём... (Akina) 31/01/2014 - 14:13:23
      Re: Далее... (Akina) 31/01/2014 - 14:23:04
      Re: Далее... (Akina) 31/01/2014 - 14:23:27
      Re: Тормозим... (Akina) 31/01/2014 - 14:27:10
      Re: Тормозим... (Akina) 31/01/2014 - 14:30:25
      Re: Ну и... (Akina) 31/01/2014 - 14:34:59
      Re: Послесловие (Akina) 31/01/2014 - 14:40:12
      Re: Супер! (Михаил) 31/01/2014 - 18:11:30
      Re: Теперь другая проблема.((( (Михаил) 03/02/2014 - 10:54:48
      Re: Решено (Михаил) 03/02/2014 - 11:22:10
      Re: А нафига? (Akina) 03/02/2014 - 11:33:46
      Re: Не понял? (Михаил) 03/02/2014 - 15:25:51
      Re: Понял.))) (Михаил) 03/02/2014 - 15:27:24

> Original message text:
> From: Михаил - 30/01/2014 - 23:11:17
> Subject:Можно ли сделать выборку одним запросом?
> -----------------
> Есть таблица orders с полями (id, number_id, amount, free, client)
> id
> number_id - номер сводного заказа
> amount - количество
> free - отгрузка бесплатно
> client_id - ID клиента
>
> Нужно сравнить два сводных заказа между собой и вывести отличия. Не соображу можно ли это сделать одним запросом.
> С помощью PHP всё решается перебором, но хочется попробовать чисто в MYSQL.
> Проблема в том, что в сводных заказах могут отсутствовать те или иные клиенты.
> Может посоветуете что-нибудь?
>


From: Михаил - 31/01/2014 - 10:39:24
Subject:Пожалуйста
-----------------
Создание:
CREATE TABLE IF NOT EXISTS `orders` (
`id` int(11) NOT NULL auto_increment,
`number_id` int(11) NOT NULL,
`partner_id` int(11) NOT NULL,
`quantity` decimal(7,0) default NULL,
`free` tinyint(1) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=530 ;


Заполнение (краткая выборка):
INSERT INTO `orders`
(`id`, `number_id`, `partner_id`, `quantity`, `free`) VALUES
(461, 36, 10, '210', 0),
(462, 36, 13, '250', 0),
(463, 36, 7, '221', 0),
(465, 36, 34, '7', 0),
(466, 36, 17, '68', 0),
(467, 36, 46, '5', 1),
(468, 36, 37, '13', 1),
(469, 36, 11, '2', 1),
(470, 36, 9, '37', 0),
(471, 36, 47, '2', 1),
(472, 36, 17, '4', 1),
(473, 36, 12, '60', 0),
(474, 36, 36, '110', 1),
(475, 36, 4, '55', 0),

(504, 37, 50, '100', 0),
(505, 37, 5, '1760', 0),
(506, 37, 37, '13', 1),
(507, 37, 52, '19', 1),

(512, 38, 13, '210', 0),
(513, 38, 10, '250', 0),
(514, 38, 7, '231', 0),
(515, 38, 6, '622', 0),
(516, 38, 34, '7', 0),
(517, 38, 17, '72', 0),
(518, 38, 46, '5', 1),
(519, 38, 37, '13', 1),
(520, 38, 47, '2', 1),
(521, 38, 9, '37', 0),
(522, 38, 11, '2', 1),
(523, 38, 17, '4', 1),
(524, 38, 12, '65', 0),
(525, 38, 36, '110', 1),

Что требуется:
Нужно сравнить заказы с number_id 38 и 36.
Номера перед выполнением запроса известны. Берутся из другой таблицы. 36 и 38 - это сводные заказы за разные недели.

Сложности:
Количество покупателей (partner_id) в 36 и 38 заказах может незначительно отличаться. Также может отличаться и размер заказа каждого покупателя (quantity). Кроме этого некоторые покупатели получают бонусный бесплатный товар, помеченный как free.

Задача - показать за счёт чего в разные недели (number_id) меняется общая отгрузка по каждому покупателю с учётом бонусной отгрузки. И вывести только то, где есть отличия.

То есть в указанной таблице на выходе нужно получить примерно следующее:

13 -40 0
10 40 0
7 10 0
6 622 0
17 4 0
12 5 0
4 -55 0

Где первая цифра - partner_id
вторая разница между quantity в 38 и 36 (с учётом free)
третья - значение free.



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

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

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



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