Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
 Прошу помощи в MySQL запросе.  [new]
Tonny96
Member

Откуда:
Сообщений: 137
Здравствуйте, ранее я с базами данных не работал, ну может совсем чуть-чуть и поверхностно.
Мне нужно написать несколько запросов, помогите пожалуйста.

Прикрепил скрин структуры таблиц в базе чтоб вам было легче вникнуть в суть задачи.
Описание: Каждый раз когда игрок отключается от сервера мы записываем в нужную таблицу его данные за время игры.

Мне необходимо составить запрос который выведет сумму всех SUM(ct_time) и SUM(t_time) игрока с определенным steamid (Например [U:1:1124124] - это steamid выбранного нами игрока) за последние 24 часа (в после end - записано unixtime когда игрок вышел с сервера - по ему и модно ориентироваться когда это событие было.), данные для вывода собираются со всех таблиц базы данных.

Для меня как для новичка это крайне сложно даже представить, очень рассчитываю на вашу конкретную помощь дорогие участники.

К сообщению приложен файл. Размер - 137Kb
22 сен 19, 13:46    [21976212]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1350
дату + время принято держать в timestamp, а не в int(11)
и тогда интервал ищется лёгким движением руки:
WHERE end > (now() - INTERVAL 1 DAY)


игроки должны лежать в отдельной таблице `users`, где есть id AUTO_INCREMENT и есть steam_id
и во все остальные таблицы игроки привязываются по id, а не steam_id
а то когда steam_id изменится, у вас изменится полярность полушарий в мозгу в попытках поменять steam_id по всей базе.
да и int искать побыстрее, чем varchar, и места меньше.


Tonny96
Для меня как для новичка это крайне сложно даже представить

А зачем полезли вообще в "горячую базу"? Тренируйтесь на кошках.
22 сен 19, 14:58    [21976227]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
Tonny96
Member

Откуда:
Сообщений: 137
полудух,

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

Все хорошо но вы одного не учли что я сам составить запрос не могу введу скудного знания mysql, прошу вас разжевать и положить в рот.. если к готовому запросу добавите описание то будет не просто круто но еще и полезно для меня. Пожалуйста.
22 сен 19, 17:29    [21976282]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
Tonny96
Member

Откуда:
Сообщений: 137
жаль что форум уже мертв((
22 сен 19, 20:21    [21976337]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
Dima T
Member

Откуда:
Сообщений: 15291
Tonny96
Все хорошо но вы одного не учли что я сам составить запрос не могу введу скудного знания mysql, прошу вас разжевать и положить в рот.. если к готовому запросу добавите описание то будет не просто круто но еще и полезно для меня. Пожалуйста.

Это в форум "работа". Там за умеренную плату все разжуют.
22 сен 19, 20:50    [21976351]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
Tonny96
Member

Откуда:
Сообщений: 137
вам так кажется)
22 сен 19, 21:43    [21976363]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1350
Tonny96
который выведет сумму всех SUM(ct_time) и SUM(t_time) игрока

что за суммы вы считаете из времени?
22 сен 19, 22:21    [21976373]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
vkle
Member

Откуда: Самара
Сообщений: 15003
Tonny96
данные для вывода собираются со всех таблиц базы данных
Вот это не понятно. Куда собираются, кем собираются? Или данные не сами собираются, а их нужно собрать из всех таблиц в запросе? Если последний вариант, то явно что-то не так со структурой базы. Какой тайный смысл хранить однотипные данные в разных местах, если можно хранить их в одном месте... Индексы, конечно, нужно определить в любом случае. Ну, если на тормоза нарваться не желаете, конечно.
Если уж базу ну совсем никак нельзя переделать по человечески... тогда через UNION объединить запросы на выборку к каждой из таблиц, а группировку и агрегатную функцию в обертку (внешний запрос) вынести.

В остальном так примерно
SELECT 
    SUM(`ct_time`) AS `sum_ct_time`,  
    SUM(`t_time`) AS `sum_t_time`
FROM 
    `68_27015`
WHERE
    `end` > (NOW() - INTERVAL 1 DAY)
    AND 
    `steamid` = '[U:1:1124124]'
GROUP BY
    `steamid`
22 сен 19, 22:43    [21976377]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1350
автор
SUM(`ct_time`) AS `sum_ct_time`,
SUM(`t_time`) AS `sum_t_time`

зачем суммировать время, что в итоге ожидается?
23 сен 19, 01:40    [21976413]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
vkle
Member

Откуда: Самара
Сообщений: 15003
полудух
зачем суммировать время, что в итоге ожидается?
Ну явно, не штуки и не килограммы. Полагаю, в итоге ожидается время. Что-то вроде три минуты из первой записи, семь из второй, сорок восемь секунд из третьей... - итого десять минут сорок восемь секунд. За минувшие 24 часа, судя по условию. Не вариант?
23 сен 19, 01:53    [21976416]     Ответить | Цитировать Сообщить модератору
 Re: Прошу помощи в MySQL запросе.  [new]
полудух
Member

Откуда: планета орков, г.Зверополис
Сообщений: 1350
вариант, но там почему-то опять int(11)
23 сен 19, 10:44    [21976571]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить