私は2つのSQL問合せを持っていますが、その1つは機能しますが、もう1つはエラーです。クエリに続いて、うまく2つのSQLクエリの違いは何ですか?
select /*ordered*/ coupon_address.coupon,merchant_address.id
from merchant_address,
coupon_address,
customers c
WHERE merchant_address.id = coupon_address.merchant_address
and c.CUSTOMER_ID = 'temp1'
AND sdo_within_distance(c.cust_geo_location,merchant_address.store_geo_location,'distance = 1 unit=MILE') = 'TRUE';
しかし、クエリが動作しない、次の作品となりますエラー
select /*ordered*/ coupon_address.coupon,merchant_address.id
from coupon_address,
customers c
JOIN merchant_address ON merchant_address.id=coupon_address.merchant_address
WHERE c.CUSTOMER_ID = 'temp1'
AND sdo_within_distance (c.cust_geo_location,merchant_address.store_geo_location, 'distance = 1 unit=MILE') = 'TRUE';
エラーが1行目で
ERRORです:ORA-00904: "COUPON_ADDRESS"。 「MERCHANT_ADDRESS」:無効な識別子
古くから古くて壊れやすい暗黙的な結合を、明示的な「JOIN」演算子と混在させています。それをしないでください。 –
ANSI構文を使用する場合は、すべてのテーブルでこの構文を使用する必要があります。同じ方法で、古いOracleの結合構文を使用することに決めた場合(これは強く推奨されます)、すべてのテーブルに対して行います – Aleksej
@a_horse_with_no_name古い結合をJOINと混合することはどういう意味ですか? – raju