Как выбрать определенный столбец из таблицы, которая имеет отношение один ко многим с другой таблицей?

0

У меня есть две таблицы, в которых есть одно отношение (пользователи и местоположения). У каждого пользователя есть одно местоположение. Но у местоположения может быть много пользователей.

В таблице users есть столбец с именем location_id который связан с столбцом с именем id в таблице locations.

locations.id → users.location_id.

Поэтому, когда я хочу получить всех users и их locations, я использую этот код:

//Select all the users.
$stmt = $pdo->prepare('SELECT * 
                        FROM users 
                            JOIN locations ON users.location_id = locations.id ');
$stmt->execute();
$values = $stmt->fetchAll(); 

//Loop through the users.
foreach($values as $val){
    $userName = $val['name'];

    //Get The location_id from users table.
    $locationId = $val['location_id']; 

    //Select the location based on this location_id.  
    $st = $pdo->prepare('SELECT * from locations WHERE id = :zid');
    $st->execute(array('zid' => $locationId));
    $v = $st->fetch();
    $location =  $v['location'];
}

Есть ли лучший способ получить тот же результат?

  • 3
    Вы должны иметь все данные, которые вам нужны в первом запросе. Я не вижу смысла использовать второй запрос.
  • 0
    @clinomaniac, как это получить из первого запроса?
Показать ещё 4 комментария
Теги:
pdo

1 ответ

2

это будет делать то же самое, насколько я могу сказать

//Select all the users.
$stmt = $pdo->prepare('SELECT * 
                        FROM users 
                            JOIN locations ON users.location_id = locations.id ');
$stmt->execute();
$values = $stmt->fetchAll(); 

//Loop through the users.
foreach($values as $val){
    $userName = $val['name'];

    //Get The location
    $location =  $val['location'];
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню