我的问题是我需要创建一个订单,以便我可以在此Web应用程序中上下移动项目。但是,我无法通过具有增量值的索引来索引订单(ord列)值,因为同一个表中有多个公司使用此列。
我的表结构是这样的:
现在我认为最简单的方法是做一个MAX并抓住最高的数字并将其作为索引用于某种方式,这样当你去的时候,对于特定的公司列表你永远不会得到两次相同的数字为公司添加新条目。
SELECT MAX(ord) FROM phonebook WHERE `id_company` = "51";
这是一条明智的选择吗?或者可以为每个客户创建一个新数据库并创建和索引并将其用作订单条目的方式?
答案 0 :(得分:1)
我建议您在分配ord
值时不要完全完美。您可以按照以下方式解决这个问题:
ord
与众不同。 (不是。)phonebook_name
的顺序来获得良好的名称顺序。对于这个目的,MySQL有这些奇妙的不区分大小写的排序规则。ord
列为50
,然后为您想要的条目提供较低的数字,并将您想要的条目设为较高的数字。当您显示特定公司的数据时,请执行此操作...
SELECT whatever, whatever
FROM phonebook
WHERE id_company = 11
ORDER BY ord, phonebook_name, phonebook_number, id_phonebook
此ORDER BY
子句将执行您想要的操作,如果存在重复项,它将保持稳定。然后,您可以在用户界面中使用类似的查询移动条目。
UPDATE phonebook SET ord=ord-1 WHERE id_phonebook = :recordnumber