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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Запрос
 
 автор: Евгений Петров   (04.01.2007 в 19:33)   письмо автору
 
 

Всех с наступающим рождеством! Снова нужна ваша помощь. Нужно составить рейтиг голосования персон. Голосуют не за одну персону а за две.. Т.е. Структура таблицы примерно следующая:
+-----+-----+
| lid | gid |
+-----+-----+
|  1  |  4  |
|  22 | 32  |
|  5  |  7  |
|  7  |  8  |
|  12 |  13 |
|  5  |  8  |
|  32 |  40 |
|  7  |  22 |
+-----+-----+

Где lid - это меньший id, gid - больший id.
Нужно определить, какие люди встречаются чаще... Т.е.:
+----+-----+
| id | cnt |
+----+-----+
|  7 |  3  |
| 22 |  2  |
| 32 |  2  |
|  5 |  2  |
|  8 |  2  |
| 12 |  2  |
|  1 |  1  |
| 13 |  1  |
|  4 |  1  |
+----+-----+

Желательно это минимальным количеством запросов сделать. Возможно ли что то придумать здесь или лучше дублировать каждую запись в исходной таблице таким образом:
+-----+-----+
| lid | gid |
+-----+-----+
|  1  |  4  |
|  4  |  1  |
|  22 | 32  |
|  32 | 22  |
|  5  |  7  |
|  7  |  5  |
|  7  |  8  |
|  8  |  7  |
|  12 |  13 |
|  13 |  12 |
|  5  |  8  |
|  8  |  5  |
|  32 |  40 |
|  40 |  32 |
|  7  |  22 |
|  22 |  7  |
+-----+-----+

Можно было бы ещё конечно хранить счетчик для каждой персоны в отдельной таблице, но эту статистику надо хранить по времени за определенный период...

Заранее спасибо!

   
 
 автор: cheops   (04.01.2007 в 19:52)   письмо автору
 
   для: Евгений Петров   (04.01.2007 в 19:33)
 

Не понятна структура таблиы lid-gid - что это это за идентификаторы и связаны ли они друг с другом - требуется просто подсчитать количество вхождений каждого из них или что-то другое? Или они содержат идентификаторы персон за которых голосуют и нужно считать одновременно и в столбце lid и в столбце gid?

   
 
 автор: Евгений Петров   (04.01.2007 в 19:56)   письмо автору
 
   для: cheops   (04.01.2007 в 19:52)
 

lid и gid - это идентификаторы неких персон, за которых голосует народ. Голосует не за каждую персону в отдельности а за пару. lid всегда меньше чем gid чтобы не путать местами. Есть ещё таблица с персонами, там у каждой персоны есть свой id. lid и gid - это и есть эти id персон. А посчитать нужно за какую персону чаще всего голосуют в паре с кем то. Причем вывести в порядке убывания рейтинга.

   
 
 автор: cheops   (04.01.2007 в 21:35)   письмо автору
 
   для: Евгений Петров   (04.01.2007 в 19:33)
 

Временную таблицу можно использовать? Вообще гораздо удбнее было бы, если хранить каждый id в отдельной записи.

   
 
 автор: Евгений Петров   (04.01.2007 в 21:41)   письмо автору
 
   для: cheops   (04.01.2007 в 21:35)
 

Нет, временные нельзя. Наверное все таки придется дублировать записи... Спасибо за помощь!

   
Rambler's Top100
вверх

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