Как через php обратиться к конкретному столбцу sql при inner join?
Пытаюсь вывести запрос sql, содержащий INNER JOIN, посредством php. Однако в объединяемых таблицах есть несколько столбцов 'name'. Как через php обратиться к конкретному столбцу?
$query = $mysqli->query("SELECT * FROM `movie` INNER JOIN categories ON movie.category_id = categories.id INNER JOIN descriptions ON movie.descriptions_id = descriptions.id");
while ($row = mysqli_fetch_assoc($query)) {
echo $row['name']." - ".$row['name']." - ".$row['name']." - ".$row['year']."<br>";
}
2 ответов
Нужно вместо обычного "SELECT *" использовать алиасы "SELECT movie.id AS m_id", было где-то в курсах.
SELECT movie.id as m_id, descriptions.id as d_id и так далее, потом в цикле обращаться к ним как названы в алиасах: m_id и d_id: первый - это поле id в таблице movie, второй - это поле id в таблице descriptions. В общем у кого есть одинаковые названия полей задаются алиасы.
Вот пример алиасов и джоина нескольких таблиц:
$query = $mysqli->query('SELECT movie.id as mov_id, categories.id as cat_id, movie.name as mov_name, categories.name as cat_name, movie.year as mov_year, descriptions.id as des_id, descriptions.name as des_name FROM `movie`
LEFT JOIN categories ON categories.id = movie.category_id
LEFT JOIN descriptions ON descriptions.id = movie.description_id');
while ( $row = mysqli_fetch_assoc($query) ) {
echo $row['mov_name'].$row['cat_name'].$row['mov_year'].$row['des_name'].'<br>';
}
Понял, большое спасибо!