2016-10-18 8 views
0

この質問はあいまいですが、私に同行してください。子供の値を検索して1つのエントリのみを検索して印刷するには

私はいくつかのテーブル、いくつかのプロパティの特性に関連するすべてを持って、彼らは以下のとおりです。

プロパティ:pty_id、郊外、プロパティの型とプロパティ

機能の他のアドレスのものを含んでいます

property_featureをfeat_name、feat_id含む:プロパティを接続し

を備えてい

リスト sが:郊外の基準、プロパティの型だけでなく、プロパティの特徴によって財産を検索するために、価格と財産である私が達成しようとしています

の利用可能性のようなものが含まれています。私が今問題にしているのは、プロパティを見つける方法がわからないということです多くの機能

郊外、1つのタイプと1つの機能で現在検索できます。複数の郊外または機能で検索する場合は、どのようにクエリを作成すればよいですか?あなたがラフな絵を持っているために(仕事が悪い慣行に新人に思えるかもしれませんが)私は私のスクリプトを提供しています:

SELECT distinct P.PTY_ID, P.PTY_UNITNUM, P.PTY_STREET, P.PTY_POSTCODE, 
     P.PTY_SUBURB,P.PTY_CITY,P.P_TYPE_ID, 
     T.P_TYPE_NAME,L.SALE_PRICE, L.AVAILABILITY 
FROM PROPERTY P 
LEFT OUTER JOIN property_type T on P.P_TYPE_ID = T.P_TYPE_ID 
LEFT OUTER JOIN listings L on P.PTY_ID = L.PTY_ID 
LEFT OUTER JOIN property_feature R on R.PTY_ID= P.PTY_ID 
LEFT OUTER JOIN feature F on R.FEAT_ID= F.FEAT_ID 
WHERE REGEXP_LIKE (P.PTY_SUBURB,'Clayton') 
and f.feat_id = 43 //feature 1 
and f.feat_id = 40;//feature 2 

上記のクエリを使用している場合、私は結果を取得しないことになります。何か案は?彼らは実際にはないが、彼らは2つの異なると同じエントリであるため、(が

SELECT P.PTY_ID, P.PTY_UNITNUM, P.PTY_STREET, P.PTY_POSTCODE, 
     P.PTY_SUBURB,P.PTY_CITY, T.P_TYPE_NAME, 
     L.SALE_PRICE, L.AVAILABILITY, R.PTY_ID,F.FEAT_ID, 
     R.FEAT_ID,F.FEAT_NAME 
FROM PROPERTY_TYPE T, PROPERTY P, LISTINGS L, PROPERTY_FEATURE R,FEATURE F 
WHERE P.P_TYPE_ID = T.P_TYPE_ID 
    AND P.PTY_ID = L.PTY_ID(+) 
    AND R.FEAT_ID= F.FEAT_ID(+) 
    AND R.PTY_ID= P.PTY_ID 
    AND REGEXP_LIKE (P.PTY_SUBURB,'Nunawading'); 

これは私のクエリの元の構造であるが、それは私に重複した結果を与えた:

より多くのアイデアのために、このクエリを参照してください特徴)。

HERE:私は、クエリから望んでいたことは、私はこれらの2つの機能**ので、下記

は、第二のクエリからのデータであるが含まれています。このプロパティの唯一の1つのエントリを取得、**クエリ条件のための2つの機能を与えられています

+2

が必要です。サンプルデータと希望の結果を投稿できますか?あなたは同じフィールドが= 43 AND = 40であるべきだと言っているので結果はありません – Aleksej

+0

Sryこのフォーラムの機能にはあまり慣れていません...ここで多くのスクリーンショットを印刷する方法はわかりません。だから、私はそれを通してテキストを書くつもりです。そのような、このプロパティは、2つの機能、スイミングプールと芝生を持って、私はこれらの2つの機能@ Aleksej – dhyy

+0

を含む場所の条件を使用してこのプロパティを検索したいデータは、投稿するための最良の方法です。誰もあなたのテキストデータを取得し、例を構築することができますが、画像はこれには役に立たないです。 – Aleksej

答えて

0

あなたはleft joinの後にどこの条件がありますか。inner joinになります。条件を結合自体に入れます(ON ...)。また、可能な値の2倍にはOR

SELECT distinct P.PTY_ID, P.PTY_UNITNUM, P.PTY_STREET, P.PTY_POSTCODE, 
     P.PTY_SUBURB,P.PTY_CITY,P.P_TYPE_ID, 
     T.P_TYPE_NAME,L.SALE_PRICE, L.AVAILABILITY 
FROM PROPERTY P 
LEFT OUTER JOIN property_type T on P.P_TYPE_ID = T.P_TYPE_ID 
LEFT OUTER JOIN listings L on P.PTY_ID = L.PTY_ID 
LEFT OUTER JOIN property_feature R on R.PTY_ID= P.PTY_ID 
LEFT OUTER JOIN feature F on R.FEAT_ID= F.FEAT_ID 
     and (f.feat_id = 43 //feature 1 
     or f.feat_id = 40) //feature 2 
WHERE REGEXP_LIKE (P.PTY_SUBURB,'Clayton') 
; 
+0

私はちょうど私の問題を解決したと思います。乾杯(: – dhyy

+0

私は何かを見落としたと思います。クエリは実際には、左外部結合の後の "and"と "or"行を見落とし、 "where"条件にジャンプしました – dhyy

関連する問題