私はSQLの初心者ですが、実際に操作しているのは、ハイスコアデータベースを機能させるのに十分なだけです。 PHPスクリプトを使用してオンラインのMySQLデータベースにアクセスしています。いずれかの方法。
私が持っているのは、プレイヤーとスコアの2つのテーブルです。プレーヤーには、id、uniqueDeviceId、chosennameがあります。スコアはあなたが期待する通常のものを持っています。
(複雑さを減らすために)単一のクエリで本当にやりたいことは、構文を組み合わせることです
INSERT INTO scores VALUES
and INSERT INTO scores SELECT...
モンスターのようなものに
INSERT INTO scores(score,difficulty,playerid)
VALUES(TheScoreThatImProviding,TheDifficultyThatImProviding, (SELECT
id FROM player WHERE uniqueDeviceId = TheUniqueIdThatImProviding)
)
それが理にかなっている場合。 playerId(3番目の「値」)を検索し、その選択の結果と提供されたVALUESの入力を混合します。
これは可能ですか?見つかったすべてのグーグル結果は、すべてがVALUESまたはすべてがSELECTのいずれかです。
意味があり、 INSERT SELECT と呼ばれます。これは、uniqueDeviceId 123、スコア5、難易度「簡単」のクエリ例です。
INSERT INTO scores (score, difficulty, playerid)
SELECT 5, 'easy', id
FROM player WHERE uniqueDeviceId = 123;
このページ によると、あなたはもうすぐです。しかし、すべての値を選択に入れてください。何かのようなもの:
insert into scores (score, difficulty, playerid )
select TheScoreThatImProviding, TheDifficultyThatImProviding, player.id
from player where uniqueDeviceId = TheUniqueIdThatImProviding
このアプローチについて:
INSERT INTO `tableA` SET
columnA = (SELECT `columnY` FROM `tableY` WHERE `id` = 2),
columnB = (SELECT `columnZ` FROM `tableB` WHERE `id` = 3);
まだベンチマークしていません。ただし、複数のSELECT
ステートメントを使用すると、データベースサーバーに負荷がかかります。このアプローチのプラス面は、読みやすさです。