请参阅下面的胶片表结构截图
下面是film_votes表结构
我想显示所有user_id = 8163的记录,并在电影表格中按年份desc排序' ano'专栏被视为年份。
我使用每页限制12条记录表示分页存在。但是当我在第二页中运行一些记录时是重复的
下面的是我的代码
$memID = 8163;
SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID ORDER BY a.ano DESC LIMIT 0,12
SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID ORDER BY a.ano DESC LIMIT 12,12
我不知道为什么会发生这种情况以及为什么重复记录会出现在第二页
请建议我如何解决这个问题,以及我做了什么错误。
提前致谢
答案 0 :(得分:3)
对于第二页,您需要使用:
SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b
WHERE a.peli_id=b.movie_id AND b.user_id=$memID
ORDER BY a.ano DESC
LIMIT 12, 12
LIMIT
是关键所在。语法是:
LIMIT [Start], [Length]
答案 1 :(得分:0)
您是否尝试过SQL LEFT JOIN?
类似的东西:
SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating
FROM film a
LEFT JOIN film_votes b
ON a.peli_id=b.movie_id
WHERE b.user_id=$memID
ORDER BY a.ano DESC LIMIT 0,12;
并更改
DESC LIMIT 12,12等24,12,当你进入下一页时。
更多信息:SQL JOIN
答案 2 :(得分:0)
您似乎正在为所有页面执行相同的代码。所以你需要做一点动态。就像这个
$page=1;//receive the page number.lets assume 1 for first page 2 for 2nd page
//$page=$_GET['page'];you can receive it this way
$start=($page-1)*12;//calculate starting index
//现在就像这样进行查询
SELECT a.cartel,a.cartel_es,a.cartel_vo,a.titulo_es,a.titulo,a.titulo_url,a.fecha_es,a.genero,a.ano,b.user_id,b.movie_id,b.rating FROM film a, film_votes b WHERE a.peli_id=b.movie_id AND b.user_id=$memID ORDER BY a.ano DESC LIMIT $start,12