powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / (SQL) помогите с запросом
24 сообщений из 24, страница 1 из 1
(SQL) помогите с запросом
    #33418356
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток. Очень нужна помощь с запросом.
Есть 2 таблицы: items и votes (картинки и голосовалка)
в items ключ id, а votes имеет поле for_id
Т.е. когда юзер голосует за item_id=35 добавляется запись в votes
и имеет в поле for_id значение 35 и значение количества очков (votes.points)

так вот вопрос в том, как составить запрос для формирования рейтинга items по значению количества очков в таблице votes.

пробовал так для выяснения места в рейтинге (пока додумался только до этого :( ):

Код: plaintext
SELECT COUNT(*)+ 1  FROM votes WHERE SUM(points)>(SELECT DISTINCT for_id, SUM(points) FROM votes);
- не работает...

А как составить запрос, чтобы он был упорядочен по рейтингу, я вообще не предстваляю...
ПОМОГИТЕ.
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33418359
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. извините с кодом ошибся...
вот так пробовал:

SELECT COUNT(*)+1 FROM votes WHERE SUM(points)>(SELECT SUM(points) FROM votes WHERE id='12323');
відает что неверно использую GROUP.
КАК СДЕЛАТЬ?
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419062
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия MySQL?

Кинь небольшой дамп таблиц.
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419526
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE TABLE "items" (
  "id" bigint( 20 ) unsigned NOT NULL,
.....
  PRIMARY KEY  ("id"),
  UNIQUE KEY "id" ("id")
) AUTO_INCREMENT= 4  ;

....

CREATE TABLE "votes" (
  "id" bigint( 20 ) unsigned NOT NULL,
  "for_id" int( 11 ) default NULL,
.....
  "points" bigint( 20 ) default NULL,
  PRIMARY KEY  ("id"),
  UNIQUE KEY "id" ("id")
) AUTO_INCREMENT= 7  ;
......

Это структура таблиц - важные части..
В общем нужно сформировать запрос рейтинга items по количеству очков (сумма points в табл. votes для каждого for_id)..

ПОМОГИТЕ
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419546
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mysql версия -
Client API version - 4.1.9
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419660
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twistfire , а INSERT\'ы я сам буду придумывать? ;)

Неуверен, что подойдет, т.к. не проверял, но попробуй следующее:
Код: plaintext
\nSELECT COUNT(*)+ 1  FROM votes WHERE SUM(points)>ANY(SELECT SUM(points) FROM votes WHERE id=\'12323\')\n

Как я понимаю, это продолжение топика "рейтинг записи в БД"? :)

И еще... текст ошибки?
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419822
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT COUNT(*)+ 1  FROM votes WHERE SUM(points)>ANY(SELECT SUM(points) FROM votes WHERE id= 2323 );

Этот запрос всегда выдает количество записей в votes...

Нет, это не продолжение темы "рейтинг записи в БД" :)
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419832
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык, а что за ошибка?
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419837
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну в смысле выдает количество записей в votes+1.
Но дело в принципе те в этом...
Мне нужно сформировать запрос, чтобы получить не место в рейтинге конкретной записи, а чтобы получить весь рейтинг.

То есть упорядочивание items по sum(points) в votes.
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419841
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так отсортируй ....
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419854
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerkutДык, а что за ошибка?

Ошибка в том, что я неверно излагаю.
Мне нужно выполнить запрос, который вернул бы список items упорядоченный по sum(points)...
а я начал відумівать запросы для выяснения "рейтинга текущей item".
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419869
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Валентин КНу так отсортируй ....

как и что сортировать? Я не пониаю как запрос написать :( Помогите, если возможно. Очень нужно.
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419880
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twistfire
Код: plaintext
SELECT COUNT(*)+ 1  FROM votes WHERE SUM(points)>ANY(SELECT SUM(points) FROM votes WHERE id= 2323 );
Этот запрос всегда выдает количество записей в votes...


если это тот запрос, тогда
Код: plaintext
1.
2.
3.
SELECT COUNT(*)+ 1  , SUM(points) as Sum_Points
FROM votes 
WHERE SUM(points)>ANY(SELECT SUM(points) FROM votes WHERE id= 2323 )
Order By Sum_Points;

Если версия не 5.0, тогда Order By 2;
Если обратная сортировка - добавить DESC
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33419941
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
использую Ваш запрос для віяснения рейтинга
SELECT COUNT(*)+1 , SUM(points) as Sum_Points FROM votes WHERE SUM(points)>ANY(SELECT SUM(points) FROM votes WHERE id=1) Order By 2;

выдает тоже - количество записей в votes+1.

Давайте забудем все запросы которые использовались ранее

Итак: мне необходим запрос, который будет выбирать из items так, чтобы упоядочить результат по sum(points) в табл. votes.
Как?
Связующее поле items.id->votes.for_id (т.е. проголосовали за item #1, в votes добавились очки и в поле votes.for_id - 1).
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33420049
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чем не устравивает вариант определения рейтинга записей, что я вам когда-то давно предлагал?

Как найти пять "лучших" записей в таблице
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33420090
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerkutЧем не устравивает вариант определения рейтинга записей, что я вам когда-то давно предлагал?

Как найти пять "лучших" записей в таблице

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

у меня 2 таблицы, причем одна из них - элементы - которые необходимо упорядочить, а вторая - таблица голосований (где каждая строка предстваляет собой id в поле items (то за что голосуют) и количесвто очков єтого голоса.)

Т.е. мне необходимо упорядочить єлементы таблицы items так, чтобы
первым был элемент с наибольши количесвтом очков, а очки считаются по таблице votes.

Понятна схема работы голосования?
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33420138
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно уже тогда привести полный дамп таблиц?

А то мне не совсем понятно - зачем вообще нужна в данном случае вторая таблица.
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33420168
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привожу дамп таблиц:

Код: 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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
CREATE TABLE `concursants` (
  `id` bigint( 20 ) unsigned NOT NULL auto_increment,
  `name_familia` varchar( 70 ) default NULL,
  `mainfoto` varchar( 70 ) default NULL,
  `birth` date default NULL,
  `concurs_y` int( 11 ) default NULL,
  `height_width` varchar( 10 ) default NULL,
  `params` varchar( 15 ) default NULL,
  `zodiac` varchar( 70 ) default NULL,
  `eyes_color` varchar( 70 ) default NULL,
  `hair_color` varchar( 70 ) default NULL,
  `education` varchar( 70 ) default NULL,
  `languages` varchar( 200 ) default NULL,
  `proffession` varchar( 70 ) default NULL,
  `mesto_uchebi_raboti` varchar( 70 ) default NULL,
  `main_occupation` varchar( 70 ) default NULL,
  `is_computer_aided` tinyint( 1 ) default NULL,
  `another_champ` tinyint( 1 ) default NULL,
  `is_model` tinyint( 1 ) default NULL,
  `hobby` varchar( 100 ) default NULL,
  `sport` varchar( 70 ) default NULL,
  `fav_book_auth` varchar( 200 ) default NULL,
  `fav_music` varchar( 200 ) default NULL,
  `fav_movie` varchar( 200 ) default NULL,
  `fav_food` varchar( 200 ) default NULL,
  `fav_flowers` varchar( 200 ) default NULL,
  `fav_tv` varchar( 200 ) default NULL,
  `fav_city_place` varchar( 200 ) default NULL,
  `fav_occupation` varchar( 200 ) default NULL,
  `antifav_occupation` varchar( 200 ) default NULL,
  `people_fav` varchar( 100 ) default NULL,
  `nedostatki` varchar( 200 ) default NULL,
  `women_ideal` varchar( 200 ) default NULL,
  `man_ideal` varchar( 200 ) default NULL,
  `dream` varchar( 200 ) default NULL,
  `slogan` text,
  `miss_should_be` varchar( 200 ) default NULL,
  `visits` bigint( 20 ) default '1',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT= 4  ;


INSERT INTO `concursants` (`id`, `name_familia`, `mainfoto`, `birth`, `concurs_y`, `height_width`, `params`, `zodiac`, `eyes_color`, `hair_color`, `education`, `languages`, `proffession`, `mesto_uchebi_raboti`, `main_occupation`, `is_computer_aided`, `another_champ`, `is_model`, `hobby`, `sport`, `fav_book_auth`, `fav_music`, `fav_movie`, `fav_food`, `fav_flowers`, `fav_tv`, `fav_city_place`, `fav_occupation`, `antifav_occupation`, `people_fav`, `nedostatki`, `women_ideal`, `man_ideal`, `dream`, `slogan`, `miss_should_be`, `visits`) VALUES ( 1 , 'Нейман Ольга Викторовна', 'neiman.jpg', '1986-07-24',  2005 , '178_56', '92/61/89', 'Лев', 'зеленый', 'каштан', 'незаконченное высшее', 'Английский', '---', 'Национальный Университет кораблестроения', 'студентка',  1 ,  0 ,  1 , 'люблю книги, мечтать', 'да. баскетбол', 'Анхель де Куатье', 'Океан Эльзы', '', '', 'нарцис', '--', 'Набережная', 'жить', 'ожидания и сомнения', 'искренность и доброта', 'не знаю', '--', '--', 'прожить непустую жизнь', 'только вперед!!', 'привлекательной, ласковой и самой доброй!',  92 );
INSERT INTO `concursants` (`id`, `name_familia`, `mainfoto`, `birth`, `concurs_y`, `height_width`, `params`, `zodiac`, `eyes_color`, `hair_color`, `education`, `languages`, `proffession`, `mesto_uchebi_raboti`, `main_occupation`, `is_computer_aided`, `another_champ`, `is_model`, `hobby`, `sport`, `fav_book_auth`, `fav_music`, `fav_movie`, `fav_food`, `fav_flowers`, `fav_tv`, `fav_city_place`, `fav_occupation`, `antifav_occupation`, `people_fav`, `nedostatki`, `women_ideal`, `man_ideal`, `dream`, `slogan`, `miss_should_be`, `visits`) VALUES ( 2 , 'Шапочка Наталья Викторовна', '5f2759151.jpg', '1985-01-15',  2005 , '171_50', '82/60/87', 'козерог', 'карие', 'черный', 'ХНУРЭ', 'Английский', '--', 'ХНУРЭ', '--',  1 ,  0 ,  0 , 'хореография', '--', 'П. Коэльо "Алхимик"', '--', '--', 'красная икра', 'Лилии', 'Дискавери', 'Парк Шевченко', '', '', '', 'Курение', '', '', 'Добиться успехов', 'Никого не бойся, никому не верь!!!', 'Целеустремленной!!!',  73 );
INSERT INTO `concursants` (`id`, `name_familia`, `mainfoto`, `birth`, `concurs_y`, `height_width`, `params`, `zodiac`, `eyes_color`, `hair_color`, `education`, `languages`, `proffession`, `mesto_uchebi_raboti`, `main_occupation`, `is_computer_aided`, `another_champ`, `is_model`, `hobby`, `sport`, `fav_book_auth`, `fav_music`, `fav_movie`, `fav_food`, `fav_flowers`, `fav_tv`, `fav_city_place`, `fav_occupation`, `antifav_occupation`, `people_fav`, `nedostatki`, `women_ideal`, `man_ideal`, `dream`, `slogan`, `miss_should_be`, `visits`) VALUES ( 3 , 'Чугра Наталья Ивановна', 'chugra.jpg', '1984-03-07',  2004 , '181_62', '90/61/89', 'рыбы', 'голубой', 'русые', 'высшее', 'Английский, итальянский', 'инженер-технолог', 'НУК', 'работаю инженером',  1 ,  0 ,  0 , 'дизайн интерьера', 'плавание', 'Смит С.', 'Scorpions, Rock-n-Roll', 'Изгой', 'блины с начинкой', 'ромашки', 'не люблю', 'все места любимые', 'хорошее настроение', 'наглость', 'целеустремленность', 'любознательность', '--', '--', 'океан, кругосветное путешествие', '--', 'настоящей',  13 );

CREATE TABLE `votes` (
  `id` bigint( 20 ) unsigned NOT NULL auto_increment,
  `for_id` int( 11 ) default NULL,
  `ip_adr` varchar( 30 ) default NULL,
  `day_of_vote` date default NULL,
  `points` bigint( 20 ) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT= 7  ;

INSERT INTO `votes` (`id`, `for_id`, `ip_adr`, `day_of_vote`, `points`) VALUES ( 1 ,  1 , '127.0.0.1', '2005-12-02',  5 );
INSERT INTO `votes` (`id`, `for_id`, `ip_adr`, `day_of_vote`, `points`) VALUES ( 2 ,  2 , '127.0.0.1', '2005-12-02',  3 );
INSERT INTO `votes` (`id`, `for_id`, `ip_adr`, `day_of_vote`, `points`) VALUES ( 3 ,  1 , '127.0.0.1', '2005-12-05',  5 );
INSERT INTO `votes` (`id`, `for_id`, `ip_adr`, `day_of_vote`, `points`) VALUES ( 4 ,  2 , '127.0.0.1', '2005-12-05',  3 );
INSERT INTO `votes` (`id`, `for_id`, `ip_adr`, `day_of_vote`, `points`) VALUES ( 5 ,  3 , '127.0.0.1', '2005-12-05',  5 );
INSERT INTO `votes` (`id`, `for_id`, `ip_adr`, `day_of_vote`, `points`) VALUES ( 6 ,  1 , '81.17.128.254', '2005-12-04',  4 );

здесь аналогично таблицы concursants - конкурсантки,
votes - оценки жюри.

Необходимо сформировать рейтинг деушек по голованиям, по баллам - сумме points - которіе біли отданы ей (поле for_id).

Надеюсь теперь я понятно разъяснил?
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33420288
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
drop table if exists t1;
create table t1  as select id, name_familia, visits from concursants;

( 3  row(s) affected)
( 0  ms taken)

select * from t1
Код: plaintext
1.
2.
3.
4.
    id  name_familia                visits
------  --------------------------  ------
     1  Нейман Ольга Викторовна         92
     2  Шапочка Наталья Викторовна      73
     3  Чугра Наталья Ивановна          13

Так что ли?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select t1.*, v.sum_points
from (
	select for_id, sum(points) as sum_points
	from votes
	group by for_id
	) v, t1
where t1.id=v.for_id
order by v.sum_points desc
Код: plaintext
1.
2.
3.
4.
    id  name_familia                visits  sum_points
------  --------------------------  ------  ----------
     1  Нейман Ольга Викторовна         92          14
     2  Шапочка Наталья Викторовна      73           6
     3  Чугра Наталья Ивановна          13           5
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33420788
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Berkut
это конечно круто :) - спасибо,
но нельзя ли обойтись без создания таблиц, так как запрос должен біть расчитан на веб-приложение?
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33420845
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем составил запрос так:
Код: plaintext
1.
2.
3.
4.
5.
select concursants.id,concursants.visits, concursants.name_familia, votes.for_id, COUNT(votes.for_id) as golosov, sum(votes.points) as sum_points
from votes, concursants 
WHERE concursants.id=votes.for_id 
AND concursants.concurs_y=".$year." 
group by votes.for_id 
ORDER BY sum_points DESC

Есть какие-то предложения по оптимизации кода, или может что-то криво?

Спасибо всем, кто помог. Особенно Berkut'у
(Где бы мне так хорошо выучить sql?)
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33421198
Фотография Berkut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
twistfireно нельзя ли обойтись без создания таблиц, так как запрос должен біть расчитан на веб-приложение?Создание таблицы я сделал только для себя, для удобства.

twistfireв общем составил запрос так:Дык, так и не понял, тебе требуется найти порядок в сортировке или просто выполнить сортировку? ;)
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33421202
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BerkutДык, так и не понял, тебе требуется найти порядок в сортировке или просто выполнить сортировку? ;)

и то и другое.
...
Рейтинг: 0 / 0
(SQL) помогите с запросом
    #33421871
Фотография Валентин К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Афтар, насколько я понял, ты не совсем представляешь себе как пользоваться sql, почитай пож-ста доку
http://www.mysql.ru/docs/gruber/
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / (SQL) помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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