Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Сортировка по максимальному количеству

Сообщения:  [1-10] 

 
 автор: adebizii   (26.11.2012 в 12:20)   письмо автору
 
   для: adebizii   (22.11.2012 в 13:44)
 

up

  Ответить  
 
 автор: adebizii   (22.11.2012 в 13:44)   письмо автору
 
   для: Sfinks   (22.11.2012 в 09:43)
 

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `pocup`
-- ----------------------------
DROP TABLE IF EXISTS `pocup`;
CREATE TABLE `pocup` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `x` int(11) DEFAULT NULL,
  `com` int(11) DEFAULT NULL,
  `podcom` int(11) DEFAULT NULL,
  `trade` int(11) DEFAULT NULL,
  `sum` int(11) DEFAULT NULL,
  `win` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of pocup
-- ----------------------------
INSERT INTO `pocup` VALUES ('1', '8', '4', '9', '1162', '0', '2');
INSERT INTO `pocup` VALUES ('2', '6', '6', '0', '1185', '0', '2');
INSERT INTO `pocup` VALUES ('3', '6', '6', '0', '1186', '0', '2');
INSERT INTO `pocup` VALUES ('4', '6', '5', '0', '1187', '0', '2');
INSERT INTO `pocup` VALUES ('5', '6', '5', '0', '1189', '0', '2');
INSERT INTO `pocup` VALUES ('6', '6', '5', '0', '1191', '0', '2');

  Ответить  
 
 автор: Sfinks   (22.11.2012 в 09:43)   письмо автору
 
   для: adebizii   (22.11.2012 в 09:15)
 

> и кстати у меня id это не номер товара, это номер покупки
Тогда вам в битву экстрасенсов. Мы тут на угадайках не специализируемся.

Хотите получить ответ - научитесь задавать вопрос. А правильная форма вопроса в по составлению SQL-запроса - описание таблиц и их полей + описание связей между таблицами + описание результата требуемого запроса. И если запрос действительно сложный, то + кусок дампа таблиц и результат, который вы предполагаете получить по этому дампу.

  Ответить  
 
 автор: adebizii   (22.11.2012 в 09:15)   письмо автору
 
   для: Sfinks   (21.11.2012 в 23:01)
 

Выводит:

com id co
4 1 1
5 4 1
5 5 1
5 6 1
6 2 1
6 3 1


это не работает

и кстати у меня id это не номер товара, это номер покупки

  Ответить  
 
 автор: Sfinks   (21.11.2012 в 23:01)   письмо автору
 
   для: adebizii   (21.11.2012 в 09:43)
 

Тогда
SELECT com, id, count(*)co
FROM pocup 
GROUP BY com, id
ORDER BY com ASC, co DESC

  Ответить  
 
 автор: adebizii   (21.11.2012 в 09:43)   письмо автору
 
   для: Sfinks   (20.11.2012 в 14:39)
 

Я хочу получить список покупок и упорядочить его по уменьшению количества купленного товара, также мы должны видеть, какой товар был куплен.

Пример:
user 1:
---товар 1
---товар 2
---товар 4
user 3:
---товар 1
---товар 2
user 4:
---товар 2

  Ответить  
 
 автор: Sfinks   (20.11.2012 в 14:39)   письмо автору
 
   для: adebizii   (20.11.2012 в 12:03)
 

Если я правильно понял задачу, то у вас запрос не правильный.
Если id это номер покупки, а группируете вы по id, то внутри группы у вас не 1 клиент со своими покупками, а клиенты, совершавшие покупку id.

Вам нужно количество покупок у каждого клиента?
А вот так, что, не так?
SELECT com, count(*)co FROM pocup GROUP BY com ORDER BY co DESC

  Ответить  
 
 автор: adebizii   (20.11.2012 в 12:03)   письмо автору
 
   для: cheops   (19.11.2012 в 21:42)
 

com - это номер клиента, а id это номер покупки.
Делаю группировку, чтобы работал COUNT для подсчета покупок, а потом сортирую по максимальному количеству покупок, а по сути мне группировка не нужна.

  Ответить  
 
 автор: cheops   (19.11.2012 в 21:42)   письмо автору
 
   для: adebizii   (19.11.2012 в 12:42)
 

Что хранится в полях com и id?
Зачем вам вообще группировка по id? Может лучше сразу сгруппировать по клиенту?

  Ответить  
 
 автор: adebizii   (19.11.2012 в 12:42)   письмо автору
 
 

Сортировка клиентов по максимальному количеству покупок. Мой рабочий код:
SELECT *,`pocup`.`com` as `now_com`, (SELECT count(`com`) from `pocup` where `com`= `now_com`) as `ccs` FROM `pocup` GROUP BY `id` ORDER BY max(`ccs`) DESC;


Это я подсчитываю сколько у клиентов купленного товара.
(SELECT count(`com`) from `pocup` where `com`= `now_com`) as `ccs`


Таблица клиентов (pocup), которые что-то купили.

В итоге получается такая табличка:

id trade(товар) now_com(клиент) ccs(кол. Покупок клиента)
2 5 66 3
1 4 66 3
3 4 66 3
4 3 33 2
5 5 33 2
6 2 1 1

Вопрос: Можно его оптимизировать? Думаю, что можно было попроще сделать, но как не знаю.

  Ответить  

Сообщения:  [1-10] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования