Я хотел бы выбрать некоторую информацию, которую я сохранил в моей базе данных MySQL. Например, у меня есть 2 таблицы gameTable и playerTable. Теперь я хочу получить gameTable и получить имена и уровни этих игроков. Как мне это сделать??Извлечение нескольких таблиц MySQL, join
Это то, что я получил до сих пор, она работает, но я не уверен, что это самый эффективный способ. Нужно ли мне создавать соединение для каждой строки?
<?php
include ('connect.php');
$result = mysqli_query($connect,
"SELECT gameTable.id,
playerTable1.name AS name1, playerTable1.level AS level1,
playerTable2.name AS name2, playerTable2.level AS level2,
playerTable3.name AS name3, playerTable3.level AS level3,
playerTable4.name AS name4, playerTable4.level AS level4
FROM gameTable
JOIN playerTable AS playerTable1 ON gameTable.P1_id = playerTable1.id
JOIN playerTable AS playerTable2 ON gameTable.P2_id = playerTable2.id
JOIN playerTable AS playerTable3 ON gameTable.P3_id = playerTable3.id
JOIN playerTable AS playerTable4 ON gameTable.P4_id = playerTable4.id
");
while ($record = mysqli_fetch_array($result))
{
echo $record['id'] . " - "
. $record['name1'] . " - " . $record['level1'] . " - "
. $record['name2'] . " - " . $record['level2'] . " - "
. $record['name3'] . " - " . $record['level3'] . " - "
. $record['name4'] . " - " . $record['level4'] . "<br>";
}
?>
Второй вопрос, моя база данных установлена в MyISAM. Было бы полезно изменить его на InnoDB? Или это полезно только для удаления обновлений и т. Д. В вашей базе данных, а не для получения данных?
Эй, мужчина. Это может быть лучше подходит для http://codereview.stackexchange.com/. Люди там действительно вступают в конструктивную обратную связь по эффективности решения и т. Д. – mvbrakel
soo ... только для уточнения: этот код работает по назначению? Это не спасение для предполагаемых прецедентов? И вам нужна обратная связь по любым или всем аспектам кода? Тогда ваш вопрос будет по теме для CR (дополнительная информация в [справочном центре] (http://codereview.stackexchange.com/help/on-topic)) – Vogel612
Код выглядит отлично. Любая оптимизация зависит от вашего приложения. Например, вы можете использовать MySQL Views. Но это может замедлить работу приложения, если есть много игр, так как у вас нет ключей в представлении. И в отношении MyISAM vs. InnoDB: снова в зависимости от вашего приложения, но мне кажется, что данные в этих двух таблицах не меняются слишком часто. Тогда InnoDB может быть преимуществом, поскольку инструкции SELECT быстрее. – Paul