Как вывести 2 поля name (с одинаковыми названиями из разных таблиц) в браузер с помощью php и sql?
3
Здравствуйте. Урок 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 ответов
1
В этой теме есть ответ:
https://fructcode.com/ru/qa/operator-select-zadanie-59-rbarh9/
2
Если в двух таблицах есть одинаковые имена, нужно использовать алиас (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. Алиас к полям таблиц нужно создавать уникальный и явно указывать, для того, чтобы вывод был без ошибок.
3
Из вашего запроса с алиасами получится такой 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>';
}
1
Спасибо! У меня получилось с вот таким запросом:
$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>';
}