我有兩個表格,類別和產品。我正在嘗試做一個select語句,將所有產品都關閉,並使用categories表中的order列來訂購它們。SQL按類別排列產品訂單在產品未鏈接到某個類別時不起作用
Categories
+--------+-------+-------+
| cat_id | name | order |
+--------+-------+-------+
| 1 | Cat 1 | 1 |
| 2 | Cat 2 | 3 |
| 3 | Cat 2 | 2 |
+--------+-------+-------+
Products
+---------+--------+-------+--------+
| prod_id | name | price | cat_id |
+---------+--------+-------+--------+
| 1 | Prod 1 | 1.99 | 1 |
| 2 | Prod 2 | 2.99 | 2 |
| 3 | Prod 3 | 3.99 | 3 |
| 4 | Prod 4 | 4.99 | 0 |
| 5 | Prod 5 | 4.99 | 2 |
+---------+--------+-------+--------+
我設法建立這個SQL語句來完成。
SELECT p.* FROM products AS p
JOIN categories AS c
ON c.cat_id = i.cat_id
ORDER BY c.order ASC
問題是產品不必屬於一個類別,如果他們不是這個查詢將不會檢索它們。儘管我可以在沒有連接的情況下執行第二個查詢並追加到第一個查詢中,但當我開始爲產品設置分頁時,會出現問題,因爲我認爲計算要顯示的產品會變得非常複雜。有什麼我可以做的嗎?
使用'LEFT OUTER JOIN'而不是'JOIN' –
[**參見Fiddle Demo **](http://sqlfiddle.com/#!2/c2c25/2) –
當調用一個簡單的'JOIN'時,你告訴你的RDBMS執行一個'隱式的JOIN',告訴MySQL'嘿idk我想要什麼,所以請猜測我明確要'哪個MySQL響應'沒問題,INNER JOIN它是!' – MonkeyZeus