SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 21/04/2019, 07:33 PM   #451
x_O
Big Clucker
 
Join Date: May 2012
Posts: 174
Reputation: 0
Default Re: MySQL (F.A.Q.)

Помогите сформировать запрос. Нужно вывести сумму значений `credit` из таблицы `table_bank`, у которых `playerid` = игроки из таблицы `table_accounts`, у которых `money` > 0.

С одним игроком работает, а с двумя уже нет.

PHP Code:
SELECT SUM(`credit`) from `table_bankWHERE `status` != AND `playerid` = (SELECT ID FROM  `table_accountsWHERE `money` > 0
PHP Code:
#1242 - Подзапрос возвращает более одной записи 
x_O is offline   Reply With Quote
Old 21/04/2019, 07:42 PM   #452
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,746
Reputation: 138
Default Re: MySQL (F.A.Q.)

Функция SUM должна использоваться только совместно с функцией GROUP BY.
Code:
SELECT SUM(credit) as total_credit, playerid
FROM table_bank
WHERE status != 0 AND playerid IN (SELECT ID FROM table_accounts WHERE money > 0)
GROUP BY playerid
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 21/04/2019, 08:02 PM   #453
x_O
Big Clucker
 
Join Date: May 2012
Posts: 174
Reputation: 0
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Stepashka View Post
Функция SUM должна использоваться только совместно с функцией GROUP BY.
Code:
SELECT SUM(credit) as total_credit, playerid
FROM table_bank
WHERE status != 0 AND playerid IN (SELECT ID FROM table_accounts WHERE money > 0)
GROUP BY playerid
С GROUP BY выводит просто все строки, не суммируя, а без - так, как мне и надо. Спасибо.
x_O is offline   Reply With Quote
Old 30/04/2019, 10:44 AM   #454
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 253
Reputation: 12
Default Re: MySQL (F.A.Q.)

Как проверить скорость выполнения MySQL запросов?
Сейчас я делаю так:
PHP Code:
public OnRconCommand(cmd[])
{
    if(!
strcmp(cmd"hello"true))
    {
        
SendClientMessageToAll(0xFFFFFFAA"Hello World!");
        print(
"You said hello to the world."); // This will appear to the player who typed the rcon command in the chat in white
        
return 1;
    } else if (!
strcmp(cmd"myspeed"true)) {
        new 
query[128];

        for(new 
0100a++) {
            
format(querysizeof(query), "SELECT %i+1 as result"a);
            
mysql_tquery(g_MySQL_DBquery"CheckMySQLSpeed""i"gettime());
        }
    }
    return 
0;
}
forward CheckMySQLSpeed(date);
public 
CheckMySQLSpeed(date)
{
    
printf("Time MySQL --------> [Time now] %i - [Time of query] %i = %i ms"gettime(), dategettime() - date);
    return 
1;



Есть ещё какие то варианты?
Johhnyllll is offline   Reply With Quote
Old 30/04/2019, 10:47 AM   #455
eakwarp
High-roller
 
Join Date: Feb 2007
Posts: 1,898
Reputation: 131
Default Re: MySQL (F.A.Q.)

Делать не один запрос, а например тысячу.
__________________
More than 10 years of development, more than 40 mb(sic! 1 kk lines+) of source code, more than a two hundred units and more than 35k revisions(upd. aug 2017). Valakas Roleplay - choose your role.

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



[Gamemode] Valakas Trucker Roleplay (Russian).
eakwarp is offline   Reply With Quote
Old 30/04/2019, 10:48 AM   #456
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 253
Reputation: 12
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by eakwarp View Post
Делать не один запрос, а например тысячу.
Пробовал, крашит консоль
Johhnyllll is offline   Reply With Quote
Old 30/04/2019, 12:04 PM   #457
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,746
Reputation: 138
Default Re: MySQL (F.A.Q.)

  1. Запрос слишком простой, в принципе всё верно выдаёт.
  2. Не передавать время в качестве аргументов, а использовать глобальную переменную.
  3. Удалить нафиг весь этот код, включить профилирование в самой ДБ и мониторить запросы через мониторинг.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 30/04/2019, 12:26 PM   #458
Johhnyllll
Huge Clucker
 
Johhnyllll's Avatar
 
Join Date: Sep 2014
Posts: 253
Reputation: 12
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Stepashka View Post
  1. Запрос слишком простой, в принципе всё верно выдаёт.
  2. Не передавать время в качестве аргументов, а использовать глобальную переменную.
  3. Удалить нафиг весь этот код, включить профилирование в самой ДБ и мониторить запросы через мониторинг.
>Удалить нафиг весь этот код, включить профилирование в самой ДБ и мониторить запросы через мониторинг.
Как можно это сделать?
Johhnyllll is offline   Reply With Quote
Old 30/04/2019, 12:30 PM   #459
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,746
Reputation: 138
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Johhnyllll View Post
>Удалить нафиг весь этот код, включить профилирование в самой ДБ и мониторить запросы через мониторинг.
Как можно это сделать?
Тебя в гугле забанили? Ищи по словам mysql profiler...
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 06/08/2019, 02:12 AM   #460
bgAndroid
Little Clucker
 
bgAndroid's Avatar
 
Join Date: Apr 2019
Posts: 1
Reputation: 0
Default Re: MySQL (F.A.Q.)

Как лучше всего сохранять данный код

PHP Code:
mysql_format(bdquerysizeof query,"UPDATE players SET test='%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i' WHERE id='%i' LIMIT 1",
test[0],test[1],test[2],test[3],test[4],test[5],test[6],test[7],test[8],test[9],test[10],test[11],test[12],test[13], 1); 
bgAndroid 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 70 02/03/2014 11:48 AM
[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 12:43 AM.


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