查询2个表加入

时间:2015-06-12 20:30:39

标签: php mysql left-join

我希望得到所有类型等于ID_GENRE = 8的电影。这是我正在做的查询:

http://l4c.me/fullsize/2-tablas-1434140362.png

$query_GetSimilar = sprintf("SELECT * FROM z_movie,z_movie_genre ORDER BY z_movie.visits DESC WHERE z_movie_genre.id_genre = 8 LIMIT 18");
$GetSimilar = mysql_query($query_GetSimilar, conect::dbconect()) or die(mysql_error());
$row_GetSimilar = mysql_fetch_assoc($GetSimilar);
$totalRows_GetSimilar = mysql_num_rows($GetSimilar);

但是我跳了下一个错误

  

您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便使用正确的语法,以便在' WHERE z_movie_genre.id_genre = 8 LIMIT 18'在第1行

3 个答案:

答案 0 :(得分:0)

进行简单搜索,看看是否可以在'where'之前加上'order by'。

答案 1 :(得分:0)

好的,现在我的查询是:

$query_GetSimilar = sprintf("SELECT * FROM z_movie,z_movie_genre WHERE z_movie_genre.id_genre=8  ORDER BY z_movie.visits DESC LIMIT 18");
$GetSimilar = mysql_query($query_GetSimilar, conect::dbconect()) or die(mysql_error());
$row_GetSimilar = mysql_fetch_assoc($GetSimilar);
$totalRows_GetSimilar = mysql_num_rows($GetSimilar);

但我没有预期的结果

答案 2 :(得分:0)

注意:

  • WHERE应该在ORDER BY
  • 之前
  • 您可以使用INNER JOIN获取两个连接表,假设它们具有连接ID /列。

例如,z_moviez_movie_genre表都有id_genre列相互连接,您可以尝试这样做:

$query_GetSimilar = sprintf("SELECT * FROM z_movie
                               INNER JOIN z_movie_genre ON z_movie.id_genre = z_movie_genre.id_genre
                               WHERE z_movie_genre.id_genre = 8
                               ORDER BY z_movie.visits DESC
                               LIMIT 18");