update SQLのためにbottemにスクロールコードと出力 最近アパートデータベースの作業を開始しました。データベースには2つのテーブルが含まれていますMYSQL LEFT JOIN結果を重複テーブルに返す
テーブル「プロパティ」には、基本的な情報(連絡先と写真)があります。それは列によって参照されますpropid
表b "floorplans"は家賃のための個々の単位についての情報を格納します。価格情報、平方フィート、アパートタイプなどがあります。また、floorplan
テーブルは、propid
カラムによって参照され、2つのテーブルをリンクすることができます。独自の一意識別子もありますが、未使用です。
通常、1つのコンプレックスあたり5~10のフロアプランがあります。
私は、私たちのウェブサイトでお客様のフロントエンド検索インターフェースを作成しています。私は、検索基準を満たすフロアプランを持つプロパティを検索する機能が必要です。ジョインステートメントを実行するとき、フロアプランの1つが検索基準に一致するたびに、同じプロパティを持つリストを私に与え続けていることがわかりました。
私はこのテーマについていくつかの研究を行った。最も一般的な答えはSELECT DISTINCTです。
問題は、結果として返されるpropid以上が必要なことです。
私はこのような何かをやってみました:SELECT DISTINCT (p.propid), p.*, f.* FROM property AS p
LEFT JOIN floorplans AS f ON p.propid = f.propid
WHERE f.pricespecial BETWEEN [min_price] AND [max_price];
[min_price]
と[max_price]
は、ユーザによって提供されています。
結果として、すべてのユーザー検索条件を満たすフロアプランを持つすべてのプロパティのリストが作成されます。しかし、私はすべての単一の一致するユニットのために返される同じプロパティを望んでいません。
私はこのクエリを実行すると、私はまだ過去には、重複する性質に
を取得し、私はただ単にデータを含むXMLフィードにフィルタスクリプトを実行しました。スクリプトは、givinプロパティの最高価格と最低価格を決定し、それらの値をプロパティテーブルprice_min
とprice_max
の新しく作成された2つの列に追加します。今までこれで十分でしたが、同社はより正確な検索結果を求めています。
私が見る唯一のオプションは、DISTINCT propidだけが返されたクエリを実行することです。その後、2番目のクエリを実行して実際のデータを取得します。
I.E.
$sql = "SELECT DISTINCT p.propid FROM property as f" .
"LEFT JOIN floorplans AS f" .
"WHERE f.price BETWEEN " . $_REQUEST['price_min'] . " AND " . $_REQUEST['price_max'] . "
EDIT * *
新しく改訂されたSQLなステートメントを使用して、いくつかのサンプル出力。
propid name pricespecial
4230A 2222 Smith Street $1225-1450
4230A 2222 Smith Street $1895-2045
4230A 2222 Smith Street $2220
4679A City Place Midtown $1230-1599
4679A City Place Midtown $1595-1650
4679A City Place Midtown $1699-2195
4572A Gables Memorial Hills $1308-2159
4572A Gables Memorial Hills $2050-2693
4606A Venue Museum District $1535-1930
4606A Venue Museum District $1980-2550
これをコメントとして投稿していたので、私は質問を編集しました。
あなたは 'F *'あなた 'SELECT'内を含めましたが、それはあなたがそれらの値が返されるかどうか私にははっきりしません。あなたは? – hvd
はい両方のテーブルのすべての値が必要ですが、私は別個のpropidカラムのみが必要です。出力はフロアプランの詳細を含むプロパティのリストなので、最終的にフロアプランテーブルから不要なフィールドを除外しますが、簡単にするために、両方のテーブルのすべてのデータを必要とすると仮定します。各プロパティエントリ。 – Dean
私は私が従うとは思わない。フロアプランに5つのレコードがある場合は、5つのフロアプランを表示したいが1つのプロパティのみを表示したいとしますか?たぶん見たいと思ういくつかのサンプル結果を含むテーブルを追加しようとします。 – Mike