我想创建一个数据库,其中产品可能有多个类别分配给他们,并以一种设置的方式进行排序,但我努力想出一个坚实的方法来显示结果,例如:数据库和SQL - 订购问题 - PHP
我有一个包含产品数据的数据库,它包括列 - prod_cat_1,prod_cat_2,prod_cat_1_order,prod_cat_2_order
prod_cat_1 = primary category
prod_cat_2 = secondary category
prod_cat_1_order & prod_cat_2_order = the order for each column
上面列设置为INT(11)。
所以说,我有这样的数据:
prod_name prod_cat_1 prod_cat_2 prod_cat_1_order prod_cat_2_order
--------- ---------- ---------- ---------------- ----------------
product 1 cat 1 cat 2 2 2
product 2 cat 1 cat 3 3 1
product 3 cat 1 1
product 4 cat 2 cat 1 2 2
product 5 cat 3 2
product 6 cat 3 cat 2 3 1
product 7 cat 2 cat 3 1 2
product 8 cat 1 4
product 9 cat 3 cat 1 1 1
我想prod_cat_1_order,然后再通过prod_cat_2_order订购。
我所知道的:
ORDER BY prod_cat_1_order, prod_cat_2_order
但这个错误输出它,例如下面的猫1:
product 3
product 9
product 1
product 4
product 2
product 8
此外,我所面临的另一个问题是,如果我查询猫1它将考虑prod_cat_1_order中的所有值,例如它会输出如下:
product 3
product 9
product 1
product 4
product 2
product 8
我想要要先订购由prod_cat_1分配到cat 1的所有产品,因此cat 1的所有记录都会先按prod_cat_1_order的顺序显示,然后再按prod_cat_2_order中设置的任何顺序进行排序。
所以输出应该是这样的:
product 3
product 1
product 2
product 8
product 9
product 4
然后,如果排序猫2,顺序将是:
product 7
product 4
product 6
product 1
然后,如果排序猫3,顺序将是:
product 9
product 5
product 6
product 2
product 7
我不知道如果我想要做的是一个简单的办法什么的很复杂,但我会非常GRA你可以给我提供任何帮助或建议。
非常感谢提前。
也许我应该在我的问题上更清楚。我的数据库确实包含两个表格,一个包含产品数据(其中类别由数字分配)和另一个包含由它们反映的猫ID号和名称的类别表。我使用INNER JOIN按类别显示产品,是否有什么不同? – SharpenedPixels
我的答案建议创建第3个表格,表示您已有的2个连接点。其目的是替换产品表中的prod_cat *字段,以反映产品和类别之间的多对多关系。这样,如果一个产品有几个类别,它在该交接表中由多行代表。当产品只有一个类别时,它可以避免prod_cat_2列中的NULL值,并且在实现您打算使用每个产品的类别排名时会有很大帮助。给它一个尝试:) –
谢谢,我已经快速查看你提供的链接,我明白你的意思。仍然不能100%确定我将如何去实施它。我会看看我能否找到更多有关联结表的信息并从那里出发。再次感谢,这是我需要的一点点信息让我朝着正确的方向前进。 – SharpenedPixels