如何在mysql数据库中订购图像?

时间:2010-04-01 01:13:57

标签: mysql

HY!

这是我的问题:我有个人资料,此个人资料有例如100张图片。

当有人访问此配置文件时,第一张图片将是我的查询的第一个结果,即按updated_at排序。

但是如果用户想要将(id = 8)的图像作为第一个,那么(id = 22)然后(id = 88)依此类推?

我需要放置另一个字段或者是否真的需要一个新表来对图像进行自定义排序?也许有人向我解释这个怎么办?

谢谢,感谢您的帮助;)

编辑: (我很感激,如果可以用很少的行来影响) 例如,如果我有100个图像,并且我与第89个交换第4个将仅受影响2行

如果我必须删除第一张图像,应该更新99张图像吗?这真是一个糟糕的情况。或者字段可以从数字2开始?(第一个图像的order_field = 1)

EDIT2: 如果我有100个图像,order_field从1到100,然后用户想要添加一个新图像并且是第一个,那么所有它们都应该被更改,对吧?这是我不想要的......

3 个答案:

答案 0 :(得分:3)

在名为positionorder的同一个表格中创建其他列/字段。

在这种情况下,您将图像位置存储在此列中。当您检索用户配置文件的图像时,您将事先知道显示用户图像的位置。

这当然要求用户指定图像相关性(位置)。 DB表中的此列甚至可以为null。如果它为null,您可以在任何位置显示此图像。填写此字段的图像应按指定顺序显示。

只是想法......

答案 1 :(得分:0)

如果您希望用户能够控制图像的排序顺序,那么是的,您需要某种用户可以影响的标准才能实现这一目标。

听起来你有一个列updated_at可能是一个时间戳。我猜这代表了对图像的某种更新操作,可能不会作为排序字段。在不了解您的应用程序的情况下,我可以想象一种情况,即用户交换两个图像,并且两者都使用相同的时间戳进行更新,在这种情况下,排序会被破坏。

最佳解决方案可能是有一个列,指示用户首选的排序顺序,此列接受用户使用该应用程序的更新。

答案 2 :(得分:0)

我在网站上有类似的新产品情景。通常,您希望新产品首先出现在列表中。但有时你想重组。以下是适用于我的解决方案(适用于您的场景): id,img,sort_position,timestamp

  1. 显示sort_position为空且按日期排序的图像
  2. 显示sort_position不为null且按sort_position排序的图像
  3. 首先,图像将按照从最新到最旧的顺序显示。没有维护,这是理想的。 分配sort_position(希望通过使用脚本语言序列化图像及其位置自动完成)后,将设置所需项目的位置。第一条规则不再适用,但您设置的排序顺序仍然存在。 但由于第一条规则已到位,您现在可以继续添加图像而无需维护排序位置。新图像将显示在顶部/第一位,然后您的有组织的分组将显示在下方。然后,如果要排序,脚本只需重新序列化位置。它可能对你想要的东西有点过分,但它确实帮助我减少了对100多种产品类别的产品的维护。

    如果您对环境有更多细节,我可以提供有关此类解决方案的更多细节。