SA-MP Forums

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

Reply
 
Thread Tools Display Modes
Old 30/04/2018, 04:45 PM   #421
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,467
Reputation: 131
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by pawnoholic View Post
Как при загрузке всех полей (*), например домов, из базы данных, получить еще из таблицы аккаунтов имя игрока, если в поле с домами, например player_id, находится ид записи из таблицы с аккаунтами.
Code:
SELECT
   *,
   (SELECT name FROM players WHERE players.id=houses.player_id) player_name
FROM houses
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 30/04/2018, 08:24 PM   #422
ZiGGi
High-roller
 
ZiGGi's Avatar
 
Join Date: Sep 2008
Location: Russia
Posts: 1,724
Reputation: 334
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Stepashka View Post
Code:
SELECT
   *,
   (SELECT name FROM players WHERE players.id=houses.player_id) player_name
FROM houses
Лучше JOIN'ами (IMHO):
Code:
SELECT houses.*, players.name AS player_name
FROM houses
LEFT JOIN players ON players.id = houses.player_id

Last edited by ZiGGi; 01/05/2018 at 04:43 AM.
ZiGGi is offline   Reply With Quote
Old 30/04/2018, 08:48 PM   #423
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,467
Reputation: 131
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by ZiGGi View Post
Лучше JOIN'ами (IMHO):
Code:
SELECT houses.*, players.name AS player_name
FROM houses
INNER JOIN players ON players.id = houses.player_id
Нет, не лучше. К тому же использовать в данном случае INNER JOIN неправильно.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 01/05/2018, 04:42 AM   #424
ZiGGi
High-roller
 
ZiGGi's Avatar
 
Join Date: Sep 2008
Location: Russia
Posts: 1,724
Reputation: 334
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Stepashka View Post
Нет, не лучше. К тому же использовать в данном случае INNER JOIN неправильно.
Почему? Вложенные запросы разве что по читабельности выигрывают, а по скорости джоины лучше.
Да, косяк, здесь нужен LEFT JOIN.
ZiGGi is offline   Reply With Quote
Old 01/05/2018, 05:22 AM   #425
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,467
Reputation: 131
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by ZiGGi View Post
Почему? Вложенные запросы разве что по читабельности выигрывают, а по скорости джоины лучше.
Да, косяк, здесь нужен LEFT JOIN.
Вы забываете что в данном случае вложенный запрос будет работать по первичному ключу, так что работать будет мгновенно. Плюс "примитивные" запросы кэшируются, а джойны нет.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 10/05/2018, 10:53 AM   #426
pawnoholic
Big Clucker
 
Join Date: Oct 2017
Posts: 76
Reputation: 3
Default Re: MySQL (F.A.Q.)

Целесообразно ли каждый раз при обновлении данных, за место UPDATE использовать INSERT INTO ON DUPLICATE KEY UPDATE?

Может ли это сыграть со мной какую то злую шутку?

P.S. Использование UPDATE не возможно, по причине того, что я не могу знать на 100% есть ли в таблице строка с таким ключом.
__________________
GitHub: @pawnoholic
pawnoholic is offline   Reply With Quote
Old 10/05/2018, 01:57 PM   #427
Stepashka
Godfather
 
Stepashka's Avatar
 
Join Date: Jul 2008
Location: near PC
Posts: 5,467
Reputation: 131
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by pawnoholic View Post
Целесообразно ли каждый раз при обновлении данных, за место UPDATE использовать INSERT INTO ON DUPLICATE KEY UPDATE?

Может ли это сыграть со мной какую то злую шутку?

P.S. Использование UPDATE не возможно, по причине того, что я не могу знать на 100% есть ли в таблице строка с таким ключом.
Вы сами ответили на свой вопрос, если вы не можете узнать то конечно целесообразно.
Но с другой стороны я думаю всегда можно решит вопрос с UPDATE. Даже если такой записи нет, то можно перехватить ошибку и выполнить INSERT.
__________________
Клятва Страуструпа: "Я обязуюсь прилежно комментировать свой код, не использовать goto и следить за состоянием своих потоков и выделяемой памяти. Я обязуюсь не оставлять мусора в системе и избегать однобуквенных переменных. Ресет." © Куч
M&M GM
Status: ON HOLD

Stepashka is offline   Reply With Quote
Old 05/07/2018, 03:02 PM   #428
pawnoholic
Big Clucker
 
Join Date: Oct 2017
Posts: 76
Reputation: 3
Default Re: MySQL (F.A.Q.)

Снова возвращаюсь к этой теме, как правильно нужно использовать INSERT INTO ON DUPLICATE KEY UPDATE если например мне нужно сохранить только 1 поле, но если строки не будет в таблице, то записать все поля в новую строку?

Как я правильно понимаю, то что то вроде этого:
Code:
INSERT INTO table_name (field_all) VALUES (value_all) ON DUPLICATE KEY UPDATE field_current = value_current
При записи двух-трех полей это еще я думаю нормально, а если мне нужно сохранить все двадцать ячеек при выключении сервера.
__________________
GitHub: @pawnoholic
pawnoholic is offline   Reply With Quote
Old 06/07/2018, 12:58 PM   #429
Eims
Huge Clucker
 
Eims's Avatar
 
Join Date: May 2013
Location: Восточный Мордор
Posts: 426
Reputation: 12
Default Re: MySQL (F.A.Q.)

Вообще стоит помнить, что запрос "INSERT INTO ON DUPLICATE KEY UPDATE" в любом случае увеличит значение AUTO_INCREMENT, даже если строка будет найдена и выполнится UPDATE. Соответственно, рано или поздно можно словить выход за пределы int.

Тебе стоит описать саму задачу, которая перед тобой стоит, дабы можно было подобрать хорошее решение. Но не думаю, что это стоит делать в данной теме. Создай отдельную тему, опиши там то, что ты хотел бы сделать и покажи как ты делаешь это сейчас
__________________
- How many IT Engineers does it take to fix a broken light bulb?
- None, the light bulb works fine in my office, I cannot replicate the issue.
Eims is offline   Reply With Quote
Old 06/07/2018, 03:42 PM   #430
pawnoholic
Big Clucker
 
Join Date: Oct 2017
Posts: 76
Reputation: 3
Default Re: MySQL (F.A.Q.)

Quote:
Originally Posted by Eims View Post
Вообще стоит помнить, что запрос "INSERT INTO ON DUPLICATE KEY UPDATE" в любом случае увеличит значение AUTO_INCREMENT, даже если строка будет найдена и выполнится UPDATE. Соответственно, рано или поздно можно словить выход за пределы int.
Это только при InnoDB, у меня же MyISAM.

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

Но я ее вроде как уже решил через INSERT INTO ON DUPLICATE KEY UPDATE
__________________
GitHub: @pawnoholic
pawnoholic 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 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:29 PM.


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