2014-10-18 5 views
0

В базе данных у пользователей есть строка под названием weapon_id, которая определяет, какое оружие он использует из другой таблицы с оружием.Есть ли лучший способ получить информацию из 2 таблиц

Есть ли лучший способ получить эту информацию, например, присоединиться к таблице или чему-то еще?

$user_get = mysqli_query($db, "SELECT * FROM members WHERE id = '".$_SESSION['sess_id']."'"); 
$user = mysqli_fetch_assoc($user_get); 

$weapon_get = mysqli_query($db, "SELECT * FROM weapons WHERE weapon_id = '".$user['weapon_id']."'"); 
$weapon = mysqli_fetch_assoc($weapon_get); 
+1

Да, вы бы использовали соединение, и вы могли бы сделать это в одном запросе. Не могли бы вы вставить результат, который вы хотели бы иметь? –

+0

Когда я повторяю его в профиле, например, я показываю, какое оружие они используют echo $ weapon ['damage'] $ weapon ['name'], а остальная статистика пользователя, такая как $ user ['name'] $ пользователь ['hp'] и т. д. – piNo

ответ

0

использование объединения, как это изменение

$user_get = mysqli_query($db, "SELECT * FROM members m LEFT JOIN weapons w ON(w.weapon_id=m.weapon_id) WHERE m.id = '".$_SESSION['sess_id']."'"); 
    $user = mysqli_fetch_assoc($user_get); 

тип объединения согласно вашему требованию. приведенный выше запрос только для примера

  • INNER JOIN: Возвращает все строки, когда есть хотя бы один матч в ОБОИХ столов

  • LEFT JOIN: Возвращает все строки из левой таблицы, и согласованные строки из таблицы справа

  • RIGHT JOIN: Возвращают все строки из таблицы справа, и соответствующие строки из левой таблицы

  • ПОЛНЫЙ JOIN: Возвращает все строки, когда есть совпадение в одной из таблиц

больше о присоединиться click here И также проверить этот http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

0
SELECT * FROM `weapon` as w 
JOIN `user` as u 
on w.weapon_id = u.weapon_id 
and u.id = :session_id 

Как об этом?

Смежные вопросы