Bir alt sorgu ile sınırlı bir tabloya bir dış birleştirmeye ihtiyacım var. Ancak, Oracle Dış Alt-Sorgu ile Katıl (Oracle 11g)
ORA-01799: a column may not be outer-joined to a sub-query
dönüyor Sonra dış başka alt sorguda blrleslr ama orijinal alt sorgu bunun için katıldı ediliyor ana tablodan bir alanda bağlıdır olarak, bu
ile başarısız iterek denedi
ORA-00904: "DTL"."TRANS_DATETIME": invalid identifier
Bu birliğin nasıl çözümlenebileceğini öneren herhangi biri var mı?
Sorgu: I (bu konuya aslında alakasız ve tek tablo olarak düşünülebilir) işlem numarasına katılmak header
ve detail
tablolar
SELECT *
FROM header hdr
JOIN detail dtl
ON hdr.trans_number = ptd.trans_number
LEFT JOIN (SELECT product_code
,cost_price
FROM prodcost pr
WHERE pr.last_amend_date = (SELECT MAX(pc.last_amend_date)
FROM prodcost pc
WHERE pc.product_code = pr.product_code
AND pc.last_amend_date <= trunc(dtl.trans_datetime))) p
ON ptd.product_code = p.product_code
açıklanması. O zamanprodcost
tablosuna katılmaya ihtiyacım var. Ancak, ben Yani detail
tablo ürün kimlikleri (product_code
) ve işlem tarihi (trans_datetime
) ile yaptığı işlemler kaydıdır En son last_amend_date
önce
trans_datetime
için dayalı bu kısıtlamak gerekir. prodcost
tablosunda ürün kimlikleri (product_code
) ve etkin bir tarih (last_amend_date
) ile ürün maliyetlerinin bir kaydı vardır. Dolayısıyla, tek bir ürün, işlemin gerçekleştiği zamana bağlı olarak birden fazla maliyete sahip olabilir. Doğru maliyeti tanımlamak için product_code
ve en son last_amend_date
numaralı bağlantıyı trans_datetime
'dan önce bağlamalıyım.
Tam sonuç kümesini sağlamak için bunları iki sorguya ve UNION
'a bölebileceğimin farkındayım. Ancak, eğer mümkün olursa, bundan kaçınmayı tercih ederim. Nasıl çözüleceğine dair başka öneriler de takdir edilecektir.
"ptd" ne başvuruyor? – wvdz
Bazı örnek verileri ve beklenen çıktınızı paylaşırsanız, gereksinimi anlamak daha kolay olurdu. – Utsav
Bu hatanın nedeni açık: "dtl.trans_datetime", tablo ayrıntılarında bir sütun değil. Bir yazım hatası belki? – wvdz