0

やろうとしていることを正確にレイアウトするために最善を尽くします。私は、さまざまなタイプのプロパティ (住宅、商業、コンドミニアム、土地など) に関連する 5 つのテーブルを持つ不動産データベースを使用しています。データベースには、MLS と呼ばれる 1 つのテーブルがあり、これらのテーブルのすべての共通要素を 1 つのテーブルにまとめます。この一般的な MLS テーブルのデータの大部分を含むこれらのテーブルのビューが必要ですが、他のいくつかのテーブルの特定のデータもいくつか含まれています。

RESIDENTIAL テーブルと CONDO テーブルのいずれかに存在するが他のテーブルには存在しない on フィールドを含む例を示します。

疑似コードで

MLSTABLE、RESIDENTIALTABLE、CONDOTABLE から MLSNUMBER を選択 (residential.CommunityAmenities OR cond.CommunityAmenities)

ここに私が試している実際のコードがありますが、CommunityAmenities (およびその他のフィールド) が複数のテーブルに存在するため、あいまいな列名エラーが発生します。

USE lsh_retsdata;

SELECT
    '',
    mls.mlsnum,
    mls.propertyclassid,
    '',
    mls.streetnumber,
    mls.streetname,
    '',
    mls.areaid,
    mls.streetletter,
    '',
    mls.StreetAddressDisplay,
    mls.remarks,
    mls.remarks,
    mls.city,
    mls.STATE,
    '',
    mls.zipcode,
    mls.countyid,
    "US",
    mls.latitude,
    mls.longitude,
    mls.listprice,
    '',
    '',
    mls.taxamount,
    '',
    totalbedrooms,
    totalfullbaths,
    mls.sqfttotal,
    '',
    mls.acres,
    mls.yearbuilt,
    mls.heatingsystem,
    mls.coolingsystem,
    heatingsource,
    mls.garagedescription,
    mls.garagecapacity,
    mls.zoning,
    '',
    mls.constructiontype,
    mls.roofmaterial,
    waterfrontdesc,
    CONCAT(mls.highschool,CHAR(13),mls.juniorhighschool),
    '',
    mls.style,
    associationfee,
    '',
    '',
    '',
    '',
    OfficeCoListOfficeName,
    '',
    CommunityAmenities
FROM rets_property_mls mls
LEFT JOIN rets_property_mul mul
    ON mls.mlsnum = mul.mlsnum
LEFT JOIN rets_property_auc auc
    ON mls.mlsnum = auc.mlsnum
LEFT JOIN rets_property_com com
    ON mls.mlsnum = com.mlsnum
LEFT JOIN rets_property_llf llf
    ON mls.mlsnum = llf.mlsnum
LEFT JOIN rets_property_cnd cnd
    ON mls.mlsnum = cnd.mlsnum
4

4 に答える 4

2

問題は(あなたが気づいたように)MySQLがCommunityAmenitiesあなたが望むものを知らないということです。

このフィールドがどのテーブルから取得されるかを明示的に指定することで、これを修正できます。

mul.CommunityAmenities

(mulを適切なテーブルに置き換えます)。

于 2013-01-06T21:32:40.297 に答える
1

複数のテーブルから取得できるが、特定の 1 つのテーブルにしか存在しない列がある場合 (コンドミニアム テーブルまたは住宅テーブルの両方ではないなど) coalesce (condotable.communityamenities, residentialtable.communityamenities) 、最初の非 null 値を取得するために使用できます。(あなたの場合、NULL以外の値のみ)

于 2013-01-06T21:37:14.440 に答える
1

エイリアスを使用して、列の名前をより意味のある名前に変更する必要があります:)

SELECT t1.CommunityAmenities AS t1CommunityAmenities,
t2. CommunityAmenities AS t2CommunityAmenities
FROM t1 left join t2 on ...
于 2013-01-06T21:23:34.220 に答える
0

選択したフィールドのリストで、このエラーを回避するためにすべてのフィールドの品質を調整する必要があります。

たとえばCommunityAmenities、SELECTリストだけでなく、のようなものを使用する必要がありますmls.CommunityAmenities。そうでなければ、サーバーはあなたがどの正確なテーブルを意味していたかを知りません-あなたはそれらの多くに参加しました、そしてそれらはすべてこのフィールドを持っています。

于 2013-01-06T21:31:13.617 に答える