Я немного новый для 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-е «значение») и смешивать результат этого выбора с вводом предоставленных значений.
Это возможно? Все результаты поиска в googling найдены либо имеют все значения VALUES, либо все SELECT.
Делает смысл и называется INSERT SELECT . Это пример запроса для uniqueDeviceId 123, Score 5 и Difficulty «easy»:
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
будет обременять сервер базы данных. Положительная сторона этого подхода – читаемость.