سؤال

أحاول تشغيل هذا الاستعلام ولكني أحصل على "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 من الفرع الاستقبال الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top