PHP: Как составить список фильма и жанра (пример) - MySQL Присоединяйтесь к многим-многим (хотите?) И PHP?
-
01-10-2019 - |
Вопрос
Как составить список фильма и жанра - MySQL Присоединяйтесь к многим для многих (если я?) И PHP? Или сделать в другой?
Примеры:
В MySQL:
Table 1:
movie_id | movie_title
1______ | title_movie_1
2______ | title_movie_2
3______ | title_movie_3
Table 2:
genre_id | genre_title
1______ | title_genre_1
2______ | title_genre_2
3______ | title_genre_3
Table 3:
id | movie_id | genre_1
1_ | __1____ | _1
2_ | __1____ | _2
3_ | __2____ | _1
4_ | __2____ | _3
5_ | __3____ | _1
6_ | __3____ | _3
7_ | __3____ | _2
Результаты PHP:
Movie: <a href="movie/1 (id_movie)">title_movie_1 _/a>
Genre:
<a href="genre/1 (id_genre)">title_genre_1 _/a>,
<a href="genre/2">title_genre_2 _/a>
Movie: <a href="movie/2 (id_movie)">title_movie_2 _/a>
Genre:
<a href="genre/1">title_genre_1 _/a>,
<a href="genre/3">title_genre_3 _/a>
Movie: <a href="movie/3 (id_movie)">title_movie_3 _/a>
Genre:
<a href="genre/1">title_genre_1 _/a>
<a href="genre/2">title_genre_2 _/a>
<a href="genre/3">title_genre_3 _/a>
Я не могу найти ... Помогите, пожалуйста! Я жду!
Искренне, Аику
Решение
SELECT
T1.movie_id,
T1.movie_title,
T2.genre_id,
T2.genre_title
FROM
Table3 AS T3
INNER JOIN Table1 AS T1 ON T3.movie_id = T1.movie_id
INNER JOIN Table2 AS T2 ON T3.genre_1 = T2.genre_id
ORDER BY
T1.movie_id
Это вернет что-то вроде этого:
movie_id | movie_title | genre_id | genre_title
1 | title_movie_1 | 1 | title_genre_1
1 | title_movie_1 | 2 | title_genre_2
2 | title_movie_2 | 1 | title_genre_1
2 | title_movie_2 | 3 | title_genre_3
3 | title_movie_3 | 1 | title_genre_1
3 | title_movie_3 | 3 | title_genre_3
3 | title_movie_3 | 2 | title_genre_2
После этого вы можете просто петить через все записи; Распечатать movie_title Если movie_id изменился, затем напечатайте genre_title.
$currentMovie = 0;
while ($row = mysql_fetch_row($result))
{
if($row['movie_id'] != $current_movie)
{
$currentMovie = $row['movie_id'];
echo "Movie: <a href=\"movie/" + $row['movie_id'] + "\">" + $row['movie_title'] + "</a><br />Genre:<br />"
}
echo "<a href=\"genre/" + $row['genre_id'] + "\">" + $row['genre_id'] + "</a><br />"
}
Другие советы
Сделайте многозначный запрос SQL:
SELECT m.movie_id, m.movie_title, g.genre_id, g.genre_title
FROM movies m
INNER JOIN movie_genres mg ON m.movie_id = mg.movie_id
INNER JOIN genres g ON g.genre_id = mg.genre_id
Затем выберите результат и группу по идентификатору фильма.
Не связан с StackOverflow