powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SUM и групировка...
7 сообщений из 7, страница 1 из 1
SUM и групировка...
    #32131276
Вот такой запрос:
Код: plaintext
1.
2.
3.
SELECT adverts.advert_id, adverts.contact_full_name, SUM(orders.price) AS price , SUM(visits.amount) AS visits
	   FROM orders,adverts, visits
	   WHERE orders.advert_id=adverts.advert_id AND  visits.advert_id=adverts.advert_id
	   GROUP BY  orders.advert_id, visits.advert_id


Получается что- сумма визитов считается, но столько раз, сколько записей в orders. А цены вообще непойми какое количесто раз. Как правильно сгрупировать????
...
Рейтинг: 0 / 0
SUM и групировка...
    #32131371
medved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты дамп базы пришли.... то бишь вот как здесь:
...
Рейтинг: 0 / 0
SUM и групировка...
    #32131516
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
CREATE TABLE `adverts` (
  `advert_id` tinyint( 4 ) unsigned NOT NULL auto_increment,
  `password` varchar( 16 ) NOT NULL default '',
  `tax_id` tinyint( 2 ) unsigned NOT NULL default '1',
  `contact_email` varchar( 32 ) NOT NULL default '',
  `contact_full_name` varchar( 32 ) NOT NULL default '',
  `contact_nickname` varchar( 12 ) NOT NULL default '',
  `contact_phone` varchar( 12 ) NOT NULL default '',
  `contact_icq` mediumint( 11 ) unsigned default NULL,
  `contact_aol` mediumint( 11 ) unsigned default NULL,
  `payment_minpayout` tinyint( 4 ) unsigned NOT NULL default '0',
  `payment_payableto` varchar( 32 ) NOT NULL default '',
  `payment_mailadress` varchar( 64 ) default NULL,
  `payment_city` varchar( 16 ) default NULL,
  `payment_state` varchar( 16 ) default NULL,
  `payment_zip` tinyint( 6 ) unsigned default NULL,
  `payment_country_id` tinyint( 4 ) unsigned default NULL,
  `payment_taxid` int( 11 ) unsigned default NULL,
  `payment_method` tinyint( 1 ) unsigned NOT NULL default '0',
  `bank_name` varchar( 32 ) default NULL,
  `bank_adress` varchar( 64 ) default NULL,
  `bank_routing` tinyint( 4 ) default NULL,
  `bank_account` varchar( 16 ) default NULL,
  `bank_benname` tinyint( 4 ) default NULL,
  `bank_benadress` tinyint( 4 ) default NULL,
  `bank_intername` varchar( 32 ) default NULL,
  `bank_interadress` varchar( 64 ) default NULL,
  `bank_interrouting` tinyint( 4 ) default NULL,
  `bank_notice` text,
  `web_name` varchar( 24 ) NOT NULL default '',
  `web_url` varchar( 64 ) NOT NULL default '',
  `regdate` datetime default NULL,
  PRIMARY KEY  (`advert_id`)
) TYPE=MyISAM

CREATE TABLE `orders` (
  `order_id` bigint( 20 ) NOT NULL auto_increment,
  `advert_id` tinyint( 4 ) default NULL,
  `customer_id` int( 11 ) default NULL,
  `amount` tinyint( 2 ) unsigned default NULL,
  `type` tinyint( 1 ) unsigned default NULL,
  `price` float( 4 , 2 ) NOT NULL default '0.00',
  `date` date default NULL,
  `delivery_id` bigint( 20 ) NOT NULL default '0',
  PRIMARY KEY  (`order_id`),
  UNIQUE KEY `order_id` (`order_id`)
) TYPE=MyISAM

CREATE TABLE `visits` (
  `date` date NOT NULL default '0000-00-00',
  `advert_id` tinyint( 4 ) default NULL,
  `amount` smallint( 5 ) default NULL,
  PRIMARY KEY  (`date`)
) TYPE=MyISAM
...
Рейтинг: 0 / 0
SUM и групировка...
    #32131602
medved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все очень просто..... таже проблема что и здесь /topic/25277\r
У тя перемножение считается, и правильный результат считается только если колво записей в таблице orders = колво записей в таблице visits для каждого участника.\r
\r
Ну мое решение было таким.\r
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
\r
SELECT \r
\t\tadverts.advert_id, \r
\t\tadverts.contact_full_name, \r
\t\tSUM(orders.price)/(count(orders.order_id)/count(distinct orders.order_id)) AS price, \r
\t\tSUM(visits.amount)/(count(visits.date)/count(distinct visits.date)) AS visits\r
FROM \r
\torders,\r
\tadverts, \r
\tvisits\r
WHERE \r
\t\torders.advert_id=adverts.advert_id \r
\tAND \r
\t\tvisits.advert_id=adverts.advert_id\r
GROUP BY adverts.advert_id\r
order by \r
\tadverts.contact_full_name;\r
\r
\r
смысл такой count считает общее количество записей, count distinct уникальных записей - узнаем было ли умножение если нет то count/count distinct=1, если да то делим на него
...
Рейтинг: 0 / 0
SUM и групировка...
    #32131605
medved
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Нескт тайм шли заодно пару записей ибо вставлять их всех ломает
...
Рейтинг: 0 / 0
SUM и групировка...
    #32131689
Ок! Точно так работает как надо!
Только вот каким макаром float в int перобразовать?
...
Рейтинг: 0 / 0
SUM и групировка...
    #32131891
Разобрался, спасибо...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SUM и групировка...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]