Вопрос по join и вывод данных

vigenist

Новичок
Здравствуйте. Помогите пожалуйста с решением проблемы.
Есть 2 таблицы -
1-ая filmbaza (информация о фильмах)
http://i61.fastpic.ru/big/2014/0628/a6/ce0ff50be15f85bb531c7a79a70333a6.jpg
2-ая film_genre (жанры фильма)
http://i63.fastpic.ru/big/2014/0628/ea/adf4e12dee7f946a2c10c4d2f61dd9ea.jpg
id (номер фильма) первой таблицы соответствует film_id второй таблицы (последняя повторяется т.к. у фильма может быть много жанров).
Задача - нужно объединить эти таблицы и вывести список фильмов (в цикле).
В итоге выводится 4 фильма,
а каждый из них выглядит примерно так (2-ой фильм):
Код:
<p>2</p>
<p1>Название фильма:</p1><p2>Невеста Чаки</p2>
<p1>Оригинальное название:</p1><p2>Bride of Chucky</p2>
<p1>Жанр:</p1><p2>ужасы,</p2><p2>триллер,</p2><p2>криминал,</p2>
Примечание: Обе таблицы будут постепенно пополнятся.
Заранее благодарен.
 

vigenist

Новичок
fixxxer Спасибо за ссылку, но у меня получилось не так как надо.
Смотрите что получилось (пример вывода одного фильма)
Код:
...
<p>2</p>
<p1>Название фильма:</p1><p2>Невеста Чаки</p2>
<p1>Оригинальное название:</p1><p2>Bride of Chucky</p2>
<p1>Жанр:</p1><p2>ужасы,</p2>

<p>2</p>
<p1>Название фильма:</p1><p2>Невеста Чаки</p2>
<p1>Оригинальное название:</p1><p2>Bride of Chucky</p2>
<p1>Жанр:</p1><p2>триллер,</p2>

<p>2</p>
<p1>Название фильма:</p1><p2>Невеста Чаки</p2>
<p1>Оригинальное название:</p1><p2>Bride of Chucky</p2>
<p1>Жанр:</p1><p2>криминал,</p2>
Сколько у фильма жанров, столько раз он выводится :confused:

Использовал следующий код -
Код:
<?
$query = "SELECT * FROM filmbaza LEFT JOIN film_genre ON filmbaza.id=film_genre.film_id";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {
    echo "<p1>Название фильма:</p1><p2>".$row['title']."</p2>
          <p1>Оригинальное название:</p1><p2>".$row['title_original']."</p2>
          <p1>Жанр:</p1><p2>".$row['genre']."</p2>";     
}
?>
 

vigenist

Новичок
Спасибо Ярослав.
С вашей помощью шагнул вперед, но появилась другая проблема с выводом.
Сейчас выводится так -
Код:
<p>2</p>
<p1>Название фильма:</p1><p2>Невеста Чаки</p2>
<p1>Оригинальное название:</p1><p2>Bride of Chucky</p2>
<p1>Жанр:</p1><p2>ужасы, триллер, криминал</p2>
а мне нужно что бы каждый жанр оборачивался в тег p2
4-ая строка должна выглядеть так -
Код:
<p1>Жанр:</p1><p2>ужасы</p2>, <p2>триллер</p2>, <p2>криминал</p2>
Сейчас код выглядит так -
Код:
<?
$query = "SELECT a.id, a.title, a.title_original, GROUP_CONCAT(DISTINCT b.genre ORDER BY b.genre DESC SEPARATOR ', ') AS film_genre FROM `filmbaza` a LEFT JOIN `film_genre` b ON a.id=b.film_id GROUP BY a.id";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {
    echo "<p1>Название фильма:</p1><p2>".$row['title']."</p2>
          <p1>Оригинальное название:</p1><p2>".$row['title_original']."</p2>
          <p1>Жанр:</p1><p2>".$row['film_genre']."</p2>";   
}
?>
 

Crys

Двинутый новичок
ну если объединяешь в запросе, оберни еще в concat :)
concat('<p>', group_concat... separator '</p>, <p>', '</p>') as film_genre

ну или уже в php - explode по запятой и выводи массив как душе угодно..
 

vigenist

Новичок
Cris большое спасибо, получилось.
Использовал 1-ый вариант.
Изменил на concat('<p>', group_concat... separator '</p>, <p>', '</p>') as film_genre
по другому не работало.
И кому интересно в итоге получил следующий код -
Код:
<?
$query = "SELECT a.id, a.title, a.title_original, CONCAT('<p2>', GROUP_CONCAT(DISTINCT b.genre ORDER BY b.genre DESC SEPARATOR '</p>, <p>') AS film_genre FROM `filmbaza` a LEFT JOIN `film_genre` b ON a.id=b.film_id GROUP BY a.id";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {
    echo "<p1>Название фильма:</p1><p2>".$row['title']."</p2>
          <p1>Оригинальное название:</p1>".$row['title_original']."</p2>
          <p1>Жанр:</p1><p2>".$row['film_genre']."</p2>"; 
}
?>
т.е. закрывающий тег p2 перевел в цикл while
 
Сверху