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]   

> Без описания
t0xas
Отправлено: 14 Февраля, 2012 - 14:00:03
Post Id



Новичок


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


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




Существует две таблицы
event
event_vote

event - Записывается событие.
event_vote - вставляются записи проголосовавшего пользователя.
то есть для event.id в event_vote много записей.

Мне нужно сделать сортировку событий по количеству голосов отданных за событие.
с MySQL дружу на уровне "посмотрел запрос в phpMyAdmin".
 
 Top
Мелкий Супермодератор
Отправлено: 14 Февраля, 2012 - 14:02:35
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(0) AS cnt, event_name FROM event_vote JOIN event USING(event_id) GROUP BY event_id ORDER BY cnt


-----
PostgreSQL DBA
 
 Top
t0xas
Отправлено: 14 Февраля, 2012 - 14:03:37
Post Id



Новичок


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


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




Мелкий пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count(0) AS cnt, event_name FROM event_vote JOIN event USING(event_id) ORDER BY cnt


Я был бы признателен, если бы объяснили как это всё работает Улыбка Фильтр должен у меня грамоздкий получиться, охото по человечески сделать PHP код )
 
 Top
Мелкий Супермодератор
Отправлено: 14 Февраля, 2012 - 14:09:24
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Ммм, звиняюсь, группировку забыл. Поправил запрос.
А суть - переджойнить эту пару таблиц, сгруппировать по id события, посчитать количество записей, отсортировать по этому значению.


-----
PostgreSQL DBA
 
 Top
t0xas
Отправлено: 14 Февраля, 2012 - 14:12:44
Post Id



Новичок


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


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




Мелкий пишет:
Ммм, звиняюсь, группировку забыл. Поправил запрос.
А суть - переджойнить эту пару таблиц, сгруппировать по id события, посчитать количество записей, отсортировать по этому значению.


спасибо!

ЗЫ Интересно, сколько месяг надо оставить чтобы по нормальному говорить спасибо?
 
 Top
EuGen Администратор
Отправлено: 14 Февраля, 2012 - 14:15:15
Post Id


Профессионал


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


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




t0xas
50. Однако не беспокойтесь - как правило, здесь никто за этим не гоняется.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
t0xas
Отправлено: 15 Февраля, 2012 - 05:36:37
Post Id



Новичок


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


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




Мелкий пишет:
Ммм, звиняюсь, группировку забыл. Поправил запрос.
А суть - переджойнить эту пару таблиц, сгруппировать по id события, посчитать количество записей, отсортировать по этому значению.


Что - то ваш вариант у меня не прокатил. Мож не так чего понял. У меня вот так вот сработало. Насколько это правильно?

CODE (SQL):
скопировать код в буфер обмена
  1. SELECT count( event_vote.id ) AS cnt, event. *
  2. FROM event
  3. LEFT JOIN event_vote ON event.id = event_vote.event_id
  4. GROUP BY event_vote.event_id
  5. ORDER BY cnt ASC
  6. LIMIT 0 , 30


А вот кстати, не все event выводятся, только лишь те, записи которых есть в таблицы event_vote. А надо бы все event

(Отредактировано автором: 15 Февраля, 2012 - 05:38:13)

 
 Top
Мелкий Супермодератор
Отправлено: 15 Февраля, 2012 - 08:51:32
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Правильно. Разве только не используйте * в запросах, лучше явно прописывайте поля, которые вам нужны. И база будет благодарна, не надо вытягивать ненужные поля, и читать потом легче, когда указано, что выбиралось.

t0xas пишет:
А вот кстати, не все event выводятся, только лишь те, записи которых есть в таблицы event_vote. А надо бы все event

Группируйте по event.id


-----
PostgreSQL DBA
 
 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