← Комьюнити

Как вывести 2 поля name (с одинаковыми названиями из разных таблиц) в браузер с помощью php и sql?

Олександр Домбровський4 ответов

Здравствуйте. Урок 60. Задание п. 4. Как можно вывести все данные 2 таблиц кроме id в браузер?

$query = $mysqli->query('SELECT * FROM `movie` LEFT JOIN categories USING (id)');

while ( $row = mysqli_fetch_assoc($query) ) {
    echo $row['name'].$row['year'].'<br>';
}

Отсюда выводит name из categories. А как сделать чтобы из movie тоже выводился name?

4 ответов

Из вашего запроса с алиасами получится такой SQL-запрос:

SELECT movie.id as mov_id, categories.id as cat_id, movie.name as mov_name, categories.name as cat_name, movie.rating as mov_rating, movie.year as mov_year FROM `movie` LEFT JOIN categories ON categories.id = movie.category_id
$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.rating as mov_rating, movie.year as mov_year FROM `movie` LEFT JOIN categories ON categories.id = movie.category_id');

while ( $row = mysqli_fetch_assoc($query) ) {
    echo $row['mov_name'].$row['cat_name'].$row['cat_name'].'<br>';
}
student_9vRGlZif3

Если в двух таблицах есть одинаковые имена, нужно использовать алиас (alias) в запросе, должно получиться примерно так:

$query = $mysqli->query("SELECT id as cat_id, name as cat_name FROM `categories` 
                             INNER JOIN movie ON movie.category_id = categories.id
                             INNER JOIN discriptions ON movie.discriptions_id = discriptions.id"
                            );

затем в цикле их также и вызывать: cat_name и cat_id. Алиас к полям таблиц нужно создавать уникальный и явно указывать, для того, чтобы вывод был без ошибок.

student_pavX41ci2

В этой теме есть ответ:

/ru/qa/operator-select-zadanie-59-rbarh9/

student_5X1YqLbg1

Спасибо! У меня получилось с вот таким запросом:

$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>';
}
Олександр Домбровський1