我在做練習 我將在數據庫上激發一個查詢並獲得約500個結果。現在我想根據一些條件對這個列表進行排序,並在客戶端展示排序後的列表。 我正在使用Java/Java EE和MySQL服務器5.5 條件是這樣的, 例如:考慮一張列有汽車的表 因此,我將在表上查詢一個查詢,它將列出大約500輛汽車。現在我想根據用戶標準對這個列表進行排序。 條件是汽車的年齡,汽車的顏色和汽車的設施。清單應按這樣排序 首先出現滿足所有三個條件的汽車列表,即與最終用戶提及的相同的年齡,相同的顏色以及用戶選擇的所有設施。 第二次出現滿足車輛列表的任何2個條件並且一個條件不令人滿意。 第三次出現滿足汽車列表的任何一個條件,而不是另外兩個。 最後出現沒有條件滿足的汽車列表。根據多個條件進行排序
我該如何做到這一點。我在谷歌搜索,在這個問題在IRC頻道問。無法獲得任何幫助。 我曾嘗試使用RANK函數通過定義CASES並最終按RANK排序。它適用於我,而條件字段(列)具有相同的表格。在我的情況下,這些字段來自父表以及與父表有多對一關係的子表。就像在這個例子中,汽車的年齡和顏色存儲在父表中,並且汽車具有的設施存儲在另一個表中。我嘗試使用內連接來做同樣的事情,但沒有運氣。
我想是這樣的:
查詢:
select distinct t0.id,t0.name,t0.price,
CASE
WHEN
t1.age='2' AND t1.colour='Red' AND t2.facilities_id=9 THEN 1
WHEN
t1.age='2' AND t1.colour='Red' AND t2.facilities_id!=9 THEN 2
WHEN
t1.age='2' AND t1.colour!='Red' AND t2.facilities_id=9 THEN 3
WHEN
t1.age!='2' AND t1.colour='Red' AND t2.facilities_id=9 THEN 4
WHEN
t1.age!='2' AND t1.colour='Red' AND t2.facilities_id!=9 THEN 5
WHEN
t1.age='2' AND t1.colour!='Red' AND t2.facilities_id!=9 THEN 6
WHEN *
t1.age!='2' AND t1.colour!='Red' AND t2.facilities_id=9 THEN 7
ELSE 8
END as pre_status
from cars_listing t0
inner join
cars_listing_details t1
on t0.id=t1.mg_listing_id
inner join
cars_facilities_listing t2
on t1.cars_listing_id=t2.listing_id
where t0.type='new_cars'
order by pre_status
預先感謝幫助。通過類似
你想做類似動態選擇查詢哪些條件動態嗎? – Dhwani 2013-02-25 12:02:14
@djIT:如果我得到一個工作的靜態查詢,我會使它動態 – 2013-02-25 12:10:30