我想創建一個數據庫,其中產品可能有多個類別分配給他們,並以一種設置的方式進行排序,但我努力想出一個堅實的方法來顯示結果,例如:數據庫和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