救命! MySQL加入多对多+ PHP

时间:2010-09-02 08:59:11

标签: php mysql join many-to-many

如何编写MySQL Join和PHP?
或者你可以做另一个? ...

示例:

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
1_ | __1____ | _2
1_ | __2____ | _1
1_ | __2____ | _3
1_ | __3____ | _1
1_ | __3____ | _3
1_ | __3____ | _2

结果PHP:

Movie: title_movie_1
Genre: 
_a href="genre/1 (id_genre)">title_genre_1 _/a>, 
_a href="genre/2">title_genre_2 _/a>

Movie: title_movie_2
Genre: 
_a href="genre/1">title_genre_1 _/a>,
_a href="genre/3">title_genre_3 _/a>

Movie: title_movie_3
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>

我找不到了...
请帮忙!我在等!

真诚的,Areku

2 个答案:

答案 0 :(得分:4)

SELECT
  table1.movie_title AS movie_title,
  GROUP_CONCAT(table2.genre_title) AS genre_titles
FROM
  table3
INNER JOIN
  table1
  ON table1.movie_id = table3.movie_id
INNER JOIN
  table2
  ON table2.genre_id = table3.genre_id

结果:

title_movie_1 | title_genre_1,title_genre_2
title_movie_2 | title_genre_1,title_genre_3
title_movie_3 | title_genre_1,title_genre_2,title_genre_3

Php代码:

<?php
// Make a MySQL Connection
mysql_connect("server", "user", "password") or die(mysql_error());
mysql_select_db("db") or die(mysql_error());

$result = mysql_query("SELECT ... FROM ...") 
or die(mysql_error());  

// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
  echo "Movie: " + $row['movie_title'];
  echo "Genre: " + $row['genres_title'];
} 

?>

答案 1 :(得分:0)

SELECT t1.movie_title, t2.genre_title
FROM table_1 t1, table_2 t2, table_3 t3
WHERE t1.movie_id = t3.movie_id
AND t2.genre_id = t3.genre_id;