SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Русский/Russian

Reply
 
Thread Tools Display Modes
Old 04/03/2017, 02:19 PM   #401
Sidorovich12
Little Clucker
 
Sidorovich12's Avatar
 
Join Date: Oct 2015
Location: Taraz
Posts: 14
Reputation: 0
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Bombo View Post
Или через команду в консоли:
Code:
mysql -u имя_пользователя_БД -p имя_базы_данных < players.sql
Да я почитал уже по этому поводу инфу. Капеееец как там много заморочек. Отдельный хостинг под единственную базу. SQLite в этом плане намного проще и его по крайней мере можно размещать одним файлов в папке сервера. MYSQL нахрен не нужен с такими заморочками. Вообщем спасибо за ответ.
Sidorovich12 is offline   Reply With Quote
Old 20/06/2017, 01:00 PM   #402
youngPimp
Little Clucker
 
Join Date: Aug 2013
Posts: 40
Reputation: 0
Default Re: MySQL (F.A.Q.)

Интересно, какая нагрузка будет, если в сутки отправлять около 4000 запросов в базу INSERT INTO, учитывая что присутствует еще и прочие стандартные запросы?
youngPimp is offline   Reply With Quote
Old 20/06/2017, 01:48 PM   #403
Mcc
Huge Clucker
 
Join Date: May 2015
Posts: 344
Reputation: 8
Default Re: MySQL (F.A.Q.)

в зависимости от частоты отправки, настройки бд
Mcc is offline   Reply With Quote
Old 21/06/2017, 08:42 PM   #404
cm666
Huge Clucker
 
Join Date: Jul 2012
Posts: 457
Reputation: 8
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by youngPimp View Post
Интересно, какая нагрузка будет, если в сутки отправлять около 4000 запросов в базу INSERT INTO, учитывая что присутствует еще и прочие стандартные запросы?
У меня больше запросов в день и нагрузки нет. CPU 0%, нагрузки на винт особой нет.
cm666 is offline   Reply With Quote
Old 22/06/2017, 02:07 AM   #405
youngPimp
Little Clucker
 
Join Date: Aug 2013
Posts: 40
Reputation: 0
Default Re: MySQL (F.A.Q.)

Спасибо за ответы.


Еще вопросик, как бороться с тем, что в момент запроса база может подвиснуть, человек выходит, а результат уже получает игрок, который зашел на сервер?
Приходится в mysql query передавать его имя на сервере\айди аккаунта и при получение результата сверять эти данные.
youngPimp is offline   Reply With Quote
Old 22/06/2017, 03:36 AM   #406
joker2020pro
Big Clucker
 
Join Date: Jan 2015
Posts: 79
Reputation: 14
Default Re: MySQL (F.A.Q.)

Создать массив для всех игроков, допустим:
HTML Code:
new mysql_race[MAX_PLAYERS];
Увеличивать значение элемента при выходе/входе игрока и перед отправкой запроса, передавать как доп. параметр в кэллбек (mysql_pquery/mysql_tquery), а в самом кэллбеке проверять переданный параметр с mysql_race[playerid].
joker2020pro is online now   Reply With Quote
Old 07/09/2017, 02:20 PM   #407
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 309
Reputation: 8
Default Re: MySQL (F.A.Q.)

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

Структура первой такая:
PHP Code:
id command_name 
Структура второй такая:
PHP Code:
id account_id command_id 
В первой таблице перечислены имена команд, с которыми нужно работать впоследствии.
Во второй таблице содержатся записи о том, какие команды и у какого игрока "активированы" (то бишь, если у конкретного игрока есть запись во второй таблице с командой под ID 5, то она у него "активирована").

Собственно, нужно запросом вернуть весь список команд из первой таблицы (их имена) и, при этом, проверить, активирована ли команда, найдя данные во второй таблице ("id" из первой таблицы равносилен "command_id" из второй таблицы).
Если активирована - 1, а иначе - 0.

Растаскивать данную задачу на несколько запросов не хочется, ибо код тогда бессмысленно раздуется и усложнится, поэтому хотелось бы найти решение в виде одного запроса.
Я знаю как вытащить только "активированные" команды, а вот остальные как-то не получается пока.
Eims is offline   Reply With Quote
Old 07/09/2017, 03:15 PM   #408
ZiGGi
High-roller
 
ZiGGi's Avatar
 
Join Date: Sep 2008
Location: Russia
Posts: 1,580
Reputation: 228
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Eims View Post
Приветствую. Столкнулся, как мне кажется, с довольно простой ситуацией, но что-то голова отказывается варить. В общем, есть две таблицы.

Структура первой такая:
PHP Code:
id command_name 
Структура второй такая:
PHP Code:
id account_id command_id 
В первой таблице перечислены имена команд, с которыми нужно работать впоследствии.
Во второй таблице содержатся записи о том, какие команды и у какого игрока "активированы" (то бишь, если у конкретного игрока есть запись во второй таблице с командой под ID 5, то она у него "активирована").

Собственно, нужно запросом вернуть весь список команд из первой таблицы (их имена) и, при этом, проверить, активирована ли команда, найдя данные во второй таблице ("id" из первой таблицы равносилен "command_id" из второй таблицы).
Если активирована - 1, а иначе - 0.

Растаскивать данную задачу на несколько запросов не хочется, ибо код тогда бессмысленно раздуется и усложнится, поэтому хотелось бы найти решение в виде одного запроса.
Я знаю как вытащить только "активированные" команды, а вот остальные как-то не получается пока.
Выбирай любой:
PHP Code:
SELECT
    commands1
.id,
    
commands1.command_name,
    
commands2.command_id IS NOT NULL AS active
FROM commands1
LEFT JOIN commands2 ON commands1
.id commands2.command_id
GROUP BY commands1
.idcommands1.command_name 
PHP Code:
SELECT
    id
,
    
command_name,
    (
SELECT command_id FROM commands2 WHERE commands1.id command_id LIMIT 1IS NOT NULL AS active
FROM commands1

Я бы выбрал первый вариант.
ZiGGi is offline   Reply With Quote
Old 07/09/2017, 03:18 PM   #409
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 214
Reputation: 8
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Eims View Post
Я знаю как вытащить только "активированные" команды, а вот остальные как-то не получается пока.
Как ты получаешь только "активированные" команды?
__________________
Мои проекты: GitHub
Johhnyllll is offline   Reply With Quote
Old 07/09/2017, 04:15 PM   #410
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 309
Reputation: 8
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Johhnyllll View Post
Как ты получаешь только "активированные" команды?
Просьба особо впечатлительных отойти от экрана, ибо мод не мой и приходится идти на некоторые велосипеды, дабы не переписывать большие куски кода.
А именно то, что в системе, которую нужно доработать, всё очень плохо с получением ID аккаунта игрока, для которого происходит выборка (работа идёт исключительно по нику), поэтому приходится обращаться к трем таблицам, чтоб сначала узнать ID аккаунта и потом уже сделать нужные дела

Как-то так:
PHP Code:
SELECT t1.command_name 
    FROM table_1 
AS t1table_2 AS t2table_3 AS t3 
        WHERE t3
.Name 'Ник' AND t2.account_id t3.id AND t1.id t2.command_id 
t1 - таблица с именами команд
t2 - таблица с перечислением активированных команд
t3 - таблица аккаунтов

Quote:
Originally Posted by ZiGGi View Post
Выбирай любой:
PHP Code:
SELECT
    commands1
.id,
    
commands1.command_name,
    
commands2.command_id IS NOT NULL AS active
FROM commands1
LEFT JOIN commands2 ON commands1
.id commands2.command_id
GROUP BY commands1
.idcommands1.command_name 
PHP Code:
SELECT
    id
,
    
command_name,
    (
SELECT command_id FROM commands2 WHERE commands1.id command_id LIMIT 1IS NOT NULL AS active
FROM commands1

Я бы выбрал первый вариант.
Спасибо. Совсем забыл про JOIN. Сейчас попробую под свои нужды запрос написать

Last edited by Eims; 07/09/2017 at 04:49 PM.
Eims is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[GameMode] Basic MySQL Account Script [MySQL R7, cache functions, easydialog, Whirlpool, salted passwords] ReneG Gamemode Scripts 71 02/03/2014 11:48 AM
[GameMode] MySQL Account Script BlueG MySQL plugin R31 (cache method) Aliassassin123456 Gamemode Scripts 10 23/02/2014 12:09 PM
[GameMode] MySQL CLEAN GAMEMODE [Whirlpool, MySQL BlueG R7, Cache, Ready Package (Windows)] GiamPy. Gamemode Scripts 13 13/09/2013 04:31 PM
BlueG MySQL plugin - Failed (plugins/mysql.so: undefined symbol: _Z13stringvprintfPKcPc) linuxthefish Plugin Development 10 13/07/2013 10:56 AM
[Tool/Web/Other] MySQL DB Manager - Easily manage your MySQL databases with this remote application fiki574 Tools and Files 13 22/07/2012 09:41 AM


All times are GMT. The time now is 01:28 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.