Oracle SQL معرف غير صالح
سؤال
أحاول تشغيل هذا الاستعلام ولكني أحصل على "ORA-00904:" Z1 "." خط الطول ": معرف غير صالح"
هل هناك طريقة لإعادة كتابة هذا، لذا يمكنني الوصول إلى هذا العمود الموجود في SPACQUERY؟ أو هل هناك عموما طريقة أفضل لتحقيق ما أحاول القيام به؟
شكرا
select zip, count(UNIQUE address_id) LOCATIONS
from records
inner join addresses a using(address_id)
inner join zip_coords z1 using(zip)
where exists
(
select 1 from (
select distance(z1.latitude, z1.longitude, z2.latitude, z2.longitude) d
from zip_coords z2
where z2.zip in (
select zip from available_zips
)
) where d <= 50
)
GROUP BY ZIP
المحلول
مشكلتك هي أنه لا يمكنك أن تنحدر أن العديد من المستويات في إعداد الاستقبال الخاص بك. ربما فاتني شيئا من القشط على استفسارك ولكنه يمكن:
select 1 from (
select distance(z1.latitude, z1.longitude, z2.latitude, z2.longitude) d
from zip_coords z2
where z2.zip in (
select zip from available_zips
)
) where d <= 50
لا يتم إعادة كتابتها على النحو التالي:
SELECT 1
FROM zip_coords z2
WHERE z2.zip IN (
SELECT zip FROM available_zips
)
AND distance(z1.latitude, z1.longitude, z2.latitude, z2.longitude) <= 50
نصائح أخرى
حدد zip، العد (العناوين الفريدة_ID) المواقع من السجلات عناوين الانضمام الداخلي A باستخدام (Address_ID) Inner انضم إلى Zip_Coords Z1 باستخدام (ZIP) حيث (حدد Min (المسافة (المسافة (z1.latitudiver، z1.longitude، z2.latituditude، z2.longitude) ) D من zip_coords z2 inner الانضمام overse_zips باستخدام (الرمز البريدي) <= 50 مجموعة بواسطة الرمز البريدي
يجب أن أحذرك، وأنا لا أعرف كيف سيؤثر ذلك على أداء الاستعلام.
بدلا من استخدام:
inner join zip_coords z1 using(zip)
حاول بما في ذلك ZIP_COORSS Z1 كجزء من جملة من البند وتشمل الانضمام في المكان. يجب أن تكون قادرا بعد ذلك من الوصول إلى Z1 من الفرع الاستقبال الخاص بك.
لا تنتمي إلى StackOverflow