【问题标题】:Display Order of products based on order column根据订单列显示产品订单
【发布时间】:2016-08-29 13:06:23
【问题描述】:

我有一个充满产品的 MySQL 数据库,每个产品都有一个类别。 我希望商店的所有者能够更改产品在网站上显示的顺序,因为他喜欢大量修改订单。

我最初的想法是有一个产品订单列,但这有很多问题,因为您需要每个类别的产品都有一个单独的订单,并且所有产品都在一个表中,即需要有一个位置 1 的椅子和位置 1 的桌子,这是绝对可以实现的,但是更大的问题在于如果我想将 chair2 的位置更改为位置 1,那么我也必须更新所有其他产品列。每次更改订单时必须运行潜在的 100 次查询,这在计算上很昂贵。

必须有一个简单的方法来做到这一点。我正在使用 MySQL 和 PHP。 任何帮助是极大的赞赏。

谢谢。

【问题讨论】:

  • 看起来您在类别和产品之间存在多对多关系。为什么你不把订单放在中间表中
  • 这是有道理的,但它仍然不能解决当您更改订单时必须更新类别 x 中的每个产品订单的问题,对吗? @ShadyAtef
  • 不,它没有。
  • 在 SQL SERVER 中提出了类似的问题。 stackoverflow.com/questions/8607998/…

标签: php mysql sql database


【解决方案1】:

您可以创建一个优先系统,在该系统中,所有者可以授予物品 +1 或 -1(或 +10、+.1 等),以便让它们在列表中向上或向下冒泡。这并不完美,因为它使项目的精确定位变得更加困难(尤其是在列表的下方),但它会减少所需的计算量。 (您甚至可以让所有者直接查看和编辑产品的优先级分数,以提高准确定位。)

【讨论】:

  • 似乎没有计算上便宜或简单的实现方式来做到这一点,我只是在这里发现了一个类似的问题,但没有找到真正的答案。谢谢你的回答。
  • 我认为您要么必须使用绝对标识符(昂贵但精确),要么必须使用相对标识符(便宜但模糊)。如果您确实找到了真正的答案,请随时告诉我。
  • 伊恩会的,谢谢!
猜你喜欢
  • 2014-05-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
相关资源
最近更新 更多