我在做练习 我将在数据库上激发一个查询并获得约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