Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сложноватая сортировка. ХЭЛП!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Помогите с сортировкой таблицы
AlexGreF
Отправлено: 27 Июня, 2009 - 19:33:42
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Март 2009  
Откуда: Амурка


Помог: 0 раз(а)




Есть таблица mysql:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. id | email                       | board | subs_name | mailsend | date
  3. -----------------------------------------------------------
  4. 1   |mail@ya.ru   |  1      |Opel,178..   |   26                    |01.02.2009
  5. 2   |gob$mail.ru  |  1      |до 2000г/в  |   39                   |31.12.2008
  6. 3   |third@gg.ru   |  1      |Opel,178..   |  12                    |11.03.2009

Как сделать сортировку этой таблицы по количеству уникальных `email` для каждого `subs_name`?
То есть мне нужно вывести на экран что-то вроде:
CODE (text):
скопировать код в буфер обмена
  1. subs_name | Уникальных e-mail
  2. ----------------------------------
  3. Opel,178.. | 2
  4. до 2000г/в | 1

Ещё нужно сделать сортировку по суммарному колличеству `mailsend` для каждого `subs_name`. То есть на выходе надо:
CODE (text):
скопировать код в буфер обмена
  1. subs_name | Всего mailsend
  2. -----------------------------
  3. до 2000г/в | 39
  4. Opel,178..  | 38


Знаю что можно как-то.. Знатоки, кто хорошо знает sql помогите!


-----
Моё место во фрилансе - http://weblancer[dot]net/users/alexsava
 
 Top
valenok
Отправлено: 27 Июня, 2009 - 20:15:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




SELECT `subs_name`, COUNT(DISTINCT `email`) GROUP BY `subs_name`
SELECT `subs_name`, SUM(`mailsend`) GROUP BY `subs_name`


-----
Truly yours, Sasha.
 
My status
 Top
AlexGreF
Отправлено: 27 Июня, 2009 - 21:01:11
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Март 2009  
Откуда: Амурка


Помог: 0 раз(а)




valenok пишет:
SELECT `subs_name`, COUNT(DISTINCT `email`) GROUP BY `subs_name`
SELECT `subs_name`, SUM(`mailsend`) GROUP BY `subs_name`

Спасибо! Только там ещё добавить надо для сортировки ORDER BY COUNT(DISTINCT `email`) DESC и ORDER BY SUM(`mailsend`) DESC

(Отредактировано автором: 27 Июня, 2009 - 21:02:24)



-----
Моё место во фрилансе - http://weblancer[dot]net/users/alexsava
 
 Top
AlexGreF
Отправлено: 28 Июня, 2009 - 07:16:24
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Март 2009  
Откуда: Амурка


Помог: 0 раз(а)




CODE (text):
скопировать код в буфер обмена
  1. SELECT `id` , `email` , `board` , `subs_name` , `mailsend` , `date`
  2. FROM `subscribes`
  3. WHERE `status` =1
  4. AND COUNT( DISTINCT `email` )>=1
  5. GROUP BY `subs_name`
  6. ORDER BY `id` ASC
  7. LIMIT 0 , 5


Ещё нужно что-то вроде этого. Но такой запрос не работает.. А мне нужно делать выборку по количеству уникальных e-mail... Подскажите как?


-----
Моё место во фрилансе - http://weblancer[dot]net/users/alexsava
 
 Top
valenok
Отправлено: 28 Июня, 2009 - 12:38:52
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




echo mysql_error();


-----
Truly yours, Sasha.
 
My status
 Top
AlexGreF
Отправлено: 29 Июня, 2009 - 06:27:07
Post Id



Новичок


Покинул форум
Сообщений всего: 44
Дата рег-ции: Март 2009  
Откуда: Амурка


Помог: 0 раз(а)




valenok пишет:
echo mysql_error();

\#1111 - Invalid use of group function


-----
Моё место во фрилансе - http://weblancer[dot]net/users/alexsava
 
 Top
Champion Супермодератор
Отправлено: 29 Июня, 2009 - 09:01:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




AlexGreF пишет:
1111 - Invalid use of group function
Ну так! Как ты себе представляешь группировку в твоем запросе?
Группировку надо делать по всем выбранным полям, не участвующим в агрегирующих фнукциях (sum, avg, count, max...).
select s, avg(w) ... group by s - среднее значение w по всем s
select s, count(w) ... group by s - количество w по всем s
select s, w ... group by s - что это может быть?
(Добавление)
И кроме этого, агрегирующие функции используются не в where, а для них есть having.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB