2

クエリの記述に問題があります。2つのテーブルがあります。

  1. プロパティテーブル(プロパティ)

    • id
    • プロパティ名
    • プロパティタイプ
    • 価格

商業用と住宅用の2種類の不動産があります。タイプが住宅の場合、価格は全物件の価格です。ただし、タイプが商用の場合、1階、1階、2階、3階など、各アパートの価格は異なります。等々。だから私は2番目のテーブルを作りました

  1. 次のフィールドを持つプロパティ価格テーブル(price_for_commerical_prop)

    • id
    • property_id
    • floor_id
    • 価格

このテーブルには、プロパティのフラットの数に応じて、1つのプロパティに対して複数の行が含まれる場合があります。floor_idには、1階の値0、1階の値1などが含まれます。

私の問題はそれです。価格に基づいて物件を検索するための検索フィールドがあります。したがって、ユーザーが価格を入力した場合、1番目のテーブルと2番目のテーブルの価格フィールドで価格を検索する必要があります。そして、検索条件に基づいて行を返します。誰かがこれを行う方法に光を当てることができますか?

4

1 に答える 1

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価格を返します。Propertyprice_for_commerical_prop

于 2012-09-20T18:26:22.157 に答える