尝试通过左右连接顺序获得上一个下一行

时间:2012-03-21 23:20:58

标签: mysqli sql-order-by

该网站包含图片。这些图像可以排名。对图像进行排名时,值可以是1,2或3.为了保存排名,我有一个表ranking_items。图像显示为缩略图。单击缩略图时,将打开带有后退和下一个按钮的图像整页。当图像按ID排序时,后退和下一个很好。但现在我希望我的图像按等级排序,当我打开全尺寸图像时,我需要返回和下一个按钮。

这是我如何查询所有图像

SELECT images.id AS imageID 
FROM images
LEFT JOIN ranking_items ON images.id=ranking_items.image_id 
ORDER BY ranking_items.rank, images.id ASC

我在这里创建缩略图。缩略图中的链接如下:

<a href='viewImage.php?id=$imageID'><img /></a>

当我在这里加载图片时,我是如何查询它的:

SELECT id
FROM images
WHERE id='$_GET["id"]'

所以对于我的后一个按钮我需要类似的东西:

SELECT images.id AS imageID
FROM  images
LEFT JOIN ranking_items ON images.id=ranking_items.image_id 
WHERE images.id < '".$imageID."'
ORDER BY ranking_items.rank_id, images.id ASC LIMIT 1

但这似乎无法正常工作。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

根据提问者的说法,这有效:

SELECT images.id AS imageID
FROM  images
LEFT JOIN ranking_items ON images.id=ranking_items.image_id 
WHERE ( 
          (images.id < ".$image->imageID ." AND ranking_items.rank_id='".$image->rank_id."') 
      OR 
           ranking_items.rank_id < '".$image->rank_id."'
       )
ORDER BY ranking_items.rank_id DESC,images.id  DESC LIMIT 1