|
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 32
|
||||||
Сортировка и подсчет27.01.2019, 19:06. Показов 1705. Ответов 8
Метки нет (Все метки)
Есть таблица сыгранных шахматных игр между двумя игроками:
id user_id user2_id Примеры (таблицы games): id - 1 user_id - 1 user2_id - 2 id - 2 user_id - 1 user2_id - 2 id - 3 user_id - 1 user2_id - 3 id - 4 user_id - 3 user2_id - 1 В результате надо получить количество сыгранных игр по игрокам, примерно таким образом: user_id: 1 count_games: 4 user_id: 2 count_games: 2 user_id: 3 count_games: 2 Пробывал таким образом:
Спасибо!
0
|
||||||
| 27.01.2019, 19:06 | |
|
Ответы с готовыми решениями:
8
Подсчет и сортировка
Сортировка слиянием и подсчет инверсий\перестановок |
|
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
|
||||||
| 28.01.2019, 13:17 | ||||||
1
|
||||||
|
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 32
|
|||||||||||
| 29.01.2019, 11:19 [ТС] | |||||||||||
|
grgdvo, пользователей может быть N-ое количество. Каким образом в таком случае поступить?
Добавлено через 2 минуты grgdvo, т.е. эту часть
Каким образом поступить? Добавлено через 3 минуты А, все, разобрался. SQL:
0
|
|||||||||||
|
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
|
||||||
| 29.01.2019, 20:59 | ||||||
|
Я использовал WITH ... SELECT ... VALUES потому, что у меня нет ваших данных.
И чтобы не генерировать таблицу, не заполнять ее данными, я выкрутился этой конструкцией. Поскольку у вас есть реальная таблица games, то и WITH уже не нужна
0
|
||||||
|
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 32
|
||||||||||||||||
| 30.01.2019, 14:17 [ТС] | ||||||||||||||||
|
grgdvo, хм, а если к данному запросу необходимо добавить еще параметры?
Скажем что user_id связан с таблицей "users" и у юзера есть "login". Куда добавить тот самый JOIN для получения пользовательского логина вместе с выборкой текущей? Добавлено через 20 минут grgdvo, если сделать такого рода запрос:
0
|
||||||||||||||||
|
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
|
||||||
| 30.01.2019, 14:40 | ||||||
|
можно в подзапрос обернуть
1
|
||||||
|
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 32
|
|
| 30.01.2019, 15:50 [ТС] | |
|
grgdvo, не поверите, минут 40 назад, читая документацию удалось самому понять как сделать
![]() Скажите, оптимальный запрос? С Вашей точки зрения? Мало пока что понимаю, но как говориться надо встать на путь истинный. Спасибо большое за предоставленные решения!
0
|
|
|
1264 / 978 / 384
Регистрация: 02.09.2012
Сообщений: 3,021
|
|
| 31.01.2019, 02:23 | |
Сообщение было отмечено stompbox как решение
Решение
С моей точки зрения запрос совсем не оптимальный
)А именно - я бы избавился от UNION ALL, ибо это как минимум присоединение одной выборки к другой да еще и сортировка скорее всего будет. И это пока просто подготовка к подсчету количеств игроков. Путь лучше в games записи будут дублироваться, но тогда посчитать можно будет быстрее одним проходом. Так вы как минимум экономите два-три раза по O(n), где O(n) - это обход по games, а n - количество записей в games. - я бы избавился от LEFT JOIN. Зачем он здесь? Вот по смыслу. У вас есть игроки, о них заполнена какая-то информация. Игроки участвуют в играх. Разве может в games появится ниоткуда идентификатор игрока, которого еще нет в users. Это же не логично, правда?? Соответственно и в запросе. Вы идете от подсчета игр и теперь вам надо добавить информацию об игроке. Логично же ожидать, что в users наверняка будут записи об этом игроке (по смыслу организации данных), поэтому и не нужен left join. Тогда join может произойти чуточку быстрее. На малом объеме данных вы практически не увидите разницы. А когда у вас будут 1000-ы игроков и 10000-игр, разница начнет ощущаться. Наверняка пригодятся индексы, которые должны будут работать для ускорения поиска необходимых записей. Ну и в резюме. Я мог тут теоретизировать сколько угодно, но любой анализ запроса начинается с просмотра его плана. Ознакомьтесь (изучите!), что такое EXPLAIN, из чего он состоит, как он работает. План запроса - это нутро базы, то, как она реально выполняет Ваш запрос. Не оптимальный план приводит к потере производительности.
1
|
|
|
0 / 0 / 0
Регистрация: 16.12.2012
Сообщений: 32
|
|
| 06.02.2019, 18:02 [ТС] | |
|
grgdvo, понял! Спасибо вам большое!
0
|
|
| 06.02.2019, 18:02 | |
|
Помогаю со студенческими работами здесь
9
Быстрая сортировка, неправильный подсчет количества сравнений и перестановок Подсчет среднего бала, затем сортировка по возрастанию и сравнение показателей.
Подсчет суммы в столбце до первой пустой строки и новый подсчет
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|