我在编写查询时遇到问题,我有两张桌子。
属性表(属性)
有两种类型的财产,商业或住宅。如果类型是住宅,价格是整个房产。但如果这种类型是商业的,每个单位都有不同的价格,如一楼,一楼,二楼,三楼。等等。所以我做了第二张桌子
物业价格表(price_for_commerical_prop) 其中包含以下字段
此表可能包含一个属性的多行,具体取决于该属性所具有的平面数。 floor_id包含底层的值0,一楼的值为1,依此类推。
我的问题是。我有一个搜索字段来根据价格搜索属性。所以如果用户输入价格,我必须在第一张表和第二张表的价格字段中搜索价格。并根据搜索条件返回行。任何人都可以阐明如何做到这一点吗?
答案 0 :(得分:0)
要搜索10到20的价格范围,您可以:
select *
from Property p
left join
price_for_commerical_prop pfcp
on p.id = pfcp.property_id
where case
when p.property_type = 'residential' then p.price
when p.property_type = 'commercial' then pfcp.price
end between 10 and 20
case
返回住宅Property
的价格,以及price_for_commerical_prop
的商业价格。