PDA

View Full Version : Hmql как сделать выборку по статам игроков?



AkaMitch
08-04-2014, 06:59 AM
Хочется смастерить запрос, чтоб он выбирал из базы фишей по критериям.
Например всех игроков у которых cold coll больше 30 и при этом на них есть больше 100 рук

Доку по HMQL почитал, но в примерах не нашел выборок по игрокам, все по хиро.

Sarek
08-04-2014, 12:00 PM
Другой документации \ описаний по hmql нет.
Только упомянутый документ.

AkaMitch
08-04-2014, 04:32 PM
А где кому можно задать такой вопрос?
Для тех кто это разрабатывал, это должен быть очень простой вопрос.

Sarek
08-04-2014, 05:35 PM
Да вот я спросил у разработчиков.
Когда\если будет ответ - процитирую.

AkaMitch
08-04-2014, 06:53 PM
благодарю!

Sarek
08-05-2014, 03:53 PM
Вот имеем такой ответ
try SELECT * StatPlayerNameAndSite
+ add desired filters

AkaMitch
09-17-2014, 11:07 AM
Вернулся я опять к этой теме, перечитал доку поэкспериментировал.
Похоже что програмисты не поняли вопроса.

вот такой запрос например работает
select StatPlayerNameAndSite, StatVPIP, StatColdCall, StatUOPFR from stats

StatPlayerNameAndSite - просто выводит в таблицу результатов имя нашего текущего игрока выбранного в HM, что вообщем то только для красоты, тк и так известно что там за пользователь выбран.

У меня же задача - как сделать выборку не по тому пользователю который выбран, а по некому произвольному пользователю.
Еще бы хорошо научится делать запрос чтоб сделать выборку ников всех игроков лимита в базе.

Судя по возникающим при неправильных запросах ошибкам, в интерфейсе доступна таблица PLAYERS
но в документации нет примеров того как к ней обращаться.

Был бы весьма признателен за пару примеров.

Sarek
09-18-2014, 12:23 PM
Не получится. Там всего три таблицы доступны через этот интерфейс
hands
stats
handhistories

И еще:
Внимание: не пытайся вставить в форумный пост SQL-запрос в формате "просто текст"!!!!!
Потому что немедленная автоматическая реакция движка форума = бан твоего IP

Надо тегом Code обрамлять, чтобы не нарваться.
Я сам пор это забыл утром, когда тебе тут отвечал - и получил запрет доступа к форуму, пока админ не разбанил адрес.

AkaMitch
09-18-2014, 12:28 PM
ага, понятно.

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

Sarek
09-18-2014, 12:57 PM
дело в том, что в postgres лезть может оказаться не имеющим смысла.
Потому что в репорты ХМ берет данные из Парента - а это НЕ postgres.
Потому и весь этот интерфейс HMQL делался, чтобы ТУДА добраться.

AkaMitch
09-18-2014, 01:02 PM
А что такое Парент?

Sarek
09-18-2014, 02:46 PM
Если коротко, то дела обстоят так:
ХМ2 (в отличие от ХМ1) хранит данные не только в базе postgreSQL
но и в особой папке, имеющей условное наименование HMParent
там лежит примерно половина (по объему) информации в виде папочек на каждого игрока, а в них файлы с руками.

путь по умолчанию (*)
%appdata%\HoldemManager\database\имя_базы_данных

Пойди посмотри, если интересно. там много. Настолько много обычно, что при попытке посмотреть Свойствами папки ее размер - Виндовс не сразу его показывает.

Именно ЭТО загружается каждый раз на старте ХМ2 в оперативку.
Не всё, конечно, а только данные на текущего Active player.
И именно из этих данных потом формируются отчеты. Все.

А вот в HUD на стол информация берется из postgresql database
и сама по себе postgres о наличии Парента не ведает. Это знает только сам ХМ2. (**)
И информация в паренте и в postgres DB - в значительной части НЕ пересекается и не дублируется. Что где требуется - там и находится.

Примечание (*): вообще говоря, путь можно сменить. Как это сделать для существующей БД - рассказано по-английски в статье FAQ
http://hm2faq.holdemmanager.com/questions/1172/Move+Database+to+Another+Hard+Drive+or+Partition

А как задать удобный для конкретного пользователя путь СРАЗУ при начале работы с ХМ2 - см русский текст здесь
http://forums.holdemmanager.com/1056-1091-1089-1089-1082-1080-1081-1092-1086-1088-1091-1084/400341-2.html

Примечание (**): именно поэтому удалять ХМ2 БД следует обязательно через интерфейс самого ХМ2. Иначе (если применить PGAdmin) - этот Парент сиротливо останется на диске бесполезным набором файлов, напрасно занимающих место. ХМ2 как таковой - его удалит, если delete database делать красными минусом в окне ХМ2.

AkaMitch
09-18-2014, 03:34 PM
Очень интересно, благодарю. Для общего развития и понимания как оно работает весьма полезно.

Мне то руки сами для текущих действий не требеются, интересуют имеющиеся накопленные значения статов на игроков.
Именно то что в хад выводится, а оно все как раз в постгресе значит имеется.

Ну на текущем этапе мне и информации из вкладки Opponents хватит надолго для осмысления.

Catalyst_Kh
09-18-2014, 04:50 PM
Но хм2 статы же не хранятся в базе данных, они вычисляются по запросу в момент запроса.

Sarek
09-19-2014, 02:10 AM
Как раз именно хранятся. Вычисляются статы в момент импорта раздачи. А на стол берутся уже готовые из БД.
Отчеты - да, пересчитываются при рефреше (или применении фильтра). Потому для репортов вся информация в оперативке и сидит, чтобы быстрее.

Catalyst_Kh
09-19-2014, 01:40 PM
Неожиданно. Где-то в английской теме читал, что как раз хм2 в базе статы не хранит, что это лишь ноуткедди хранит уже готовые статы в базе. Возможно там речь шла только о постгре базе и как раз в паренте уже вычисленные хм2 статы и хранятся?

Sarek
09-19-2014, 04:07 PM
Формат того, что записано в Паренте, не публиковался. И не будет.
Но там и статы, и руки...
Открыть файл и посмотреть, конечно, можно - но, скорее всего, просто заболит голова. :p

А статы из postgres DB - ну, вообще-то да, вычисляются.
В том смысле, что формул-то нет "как таковых".
А есть (хранится в БД) число случаев, когда действие то или иное исполнить МОГ
и число случаев, когда все-таки сделал
вот дробь эта и вычисляется "на лету" - но это ведь быстро.
Хотя и это-то я не все (посмотрел сейчас через Pgadmin) нашел в БД.

AkaMitch
09-19-2014, 06:36 PM
А формат того что и где хранится в постгресе публиковался?

Sarek
09-20-2014, 02:49 AM
Структура postgres-части БД тоже не публиковалась.
Все, что есть для "сторонних изыскателей" - вот эта дока по HMQL. Для того его и обнародовали, чтобы не публиковать ничего другого.