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

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

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

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

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

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

Откуда: планета орков, г.Зверополис
Сообщений: 936
дату + время принято держать в 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

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

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

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

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

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

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

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

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

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

Откуда: Самара
Сообщений: 14743
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

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

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

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

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