2012-02-27 21 views
2

我正在用PHP編寫一個網站& mySQL。 在我的應用程序中,產品類​​別以層次​​結構存儲在數據庫中。 我跟着「物化路徑」(又名「平表型號」)的方法&創建這樣一個表:mySQL:通過給定的ID字符串對ID進行排序? (構建分層數據的麪包屑)

enter image description here

假設我要建立在類FLASH項的麪包屑(CATEGORY_ID = 8 ):

電子 - >便攜式電子產品 - > MP3播放器 - > FLASH

我不知道如果我可以通過這個查詢得到正確的順序 'FLASH' 祖先的行:

Select * from category where category_ID in (1,6,7,8) ORDER BY '1,6,7,8' 

什麼可以成爲正確的替換:

ORDER BY '1,6,7,8' 

?感謝所有的建議!

+0

'CATEGORY_ID在(1,6,7,8-)ORDER BY category_ID'可能意味着你按順序獲得結果(1,6,7,8)。但是,具有(1,8,7,6)ORDER BY category_ID'中的category_ID的相同查詢將以錯誤的順序返回結果。 – 2012-02-27 07:18:46

回答

1

我找到了我自己的答案!

SELECT * 
FROM category 
WHERE category_ID 
IN (1, 6, 7, 8) 
ORDER BY category_ID =1 DESC , category_ID =8 DESC , category_ID =7 DESC , category_ID =6 DESC 

SQL字符串上面能幫助我,任何預定的順序排序ID:1-6-7-8或1-8-7-6或6-1-8-7或者任何別人的東西!

0

我可能沒有得到正確的問題,但你的意思是?

Select * from category where category_ID in (1,6,7,8) ORDER BY category_id 
+0

不,我希望結果按照括號中的順序排序:1,6,7,8。換句話說,如果字符串是:'8,7,1,6',那麼結果的順序應該是:8,7,1,6 – 2012-02-27 13:42:51

1

的一種方式更優雅,更有效的方式來實現,這將是:

SELECT * FROM `category` WHERE `category_ID` IN(1,6,7,8) ORDER BY Field(`category_ID`,1,6,7,8) 

映入眼簾, 安迪

+0

謝謝,我會在某一天測試它! – 2013-01-29 14:26:45

相關問題