@kslv1

Выборка элементов из таблицы. Как осуществить правильно?

Стоит задача сделать выборку из таблицы serial_genre и отобразить на сайте, в ней одному сериалу принадлежат два жанра. Довольно много попыток предпринял чтобы извлечь правильные значения, но всегда выводит "Детектив", т.е. id=1. Чуть ниже прикреплю примеры как это делал, вдруг упускаю какую либо мелочь.
5ecd5aae18b9e036958271.png
Вот сам запрос в БД:

function get_genre_by_id($id)
{
  global $db;
  $genre = $db->query("SELECT serial.serial_name, genre.genre_name FROM serial INNER JOIN (genre INNER JOIN serial_genre ON genre.genre_id = serial_genre. genre_id) ON serial.serial_id= serial_genre.serial_id");
  foreach ($genre as $genre_name) {
    return $genre_name;
  }
}


Запрос верный, я проверял в phpmyadmin - строит таблицу с правильными значениями, все окей.

Попытка вывести циклом через while - делает бесконечность "Детектив", все зависает намертво.
Попытка вывести через foreach выводит 4 "Детектив" и все. Может им не хватает какого-то условия, может ошибка еще где-то.
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Наипростейший наитупейший, но рабочий вариант:
SELECT serial.serial_name, genre.genre_name
FROM serial
LEFT JOIN serial_genre ON serial_genre.serial_id = serial.serial_id
LEFT JOIN genre ON genre.genre_id = serial_genre.genre_id
Ответ написан
@galaxy
Во-первых, используйте LEFT JOIN как выше написано (вдруг сериалу не присвоен жанр).
Во-вторых, при простом джойне будут дубликаты сериалов, т.е. несколько строк типа
Сериал1    Детектив
Сериал1    Боевик


Либо разбирайте их в PHP, либо в вашем простом случае поможет GROUP_CONCAT (похожий был вопрос)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы