5

いくつかのテーブルを結合した選択クエリがT1ありT2、両方のテーブルにフェッチする必要のない STATUS という名前のフィールドがあります。where 句で、WHERE STATUS=1さらにいくつかの条件を追加する必要があります。

しかし、どういうわけか、where句のフィールドにテーブル名またはテーブルエイリアスを追加できません。つまり、 where を使用できませんT2.STATUS=1。「あいまいなフィールド エラー」を回避できるように、常にSTATUS=1where 句の fromを考慮する方法はありますか?T1.STATUS

サンプルクエリは次のとおりです。

select T1.name, T1.address, T1.phone, T2.title, T2.description from T1
Left Join T2 on T1.CID=T2.ID
where STATUS = 1

STATUS =1上記のクエリでは、常に意味するようにしたいT2.STATUS

4

1 に答える 1

3

何らかの理由で生活に耐えられない場合

select T1.name, T1.address, T1.phone, T2.title, T2.description from T1
Left Join T2 on T1.CID=T2.ID
where T2.STATUS = 1

その後、私はあなたができると思います

SELECT T1.name, T1.address, T1.phone, T2.title, T2.description 
FROM (  SELECT CID, name, address, phone
        FROM T1) AS T1
LEFT JOIN T2
ON T1.CID=T2.ID
WHERE STATUS = 1

基本的に、T1 からの STATUS 列の取得をスキップするだけです。そうすれば、衝突はあり得ません。

結論; これを行う簡単な方法はありません。シンプルに最も近いのは、両方の STATUS 列に異なる名前を付けることですが、それでも極端に思えます。

于 2012-04-25T06:49:04.823 に答える