में संदर्भ पैरेंट क्वेरी कॉलम ओरेकल का उपयोग करके एक सबक्वायरी के बाहर एक कॉलम का संदर्भ कैसे दे सकता हूं? मुझे विशेष रूप से सबक्वायरी के WHERE कथन में इसका उपयोग करने की आवश्यकता है।सबक्वायरी (ओरेकल)
SELECT Item.ItemNo, Item.Group
FROM Item
LEFT OUTER JOIN (SELECT Attribute.Group, COUNT(1) CT
FROM Attribute
WHERE Attribute.ItemNo=12345) A ON A.Group = Item.Group
WHERE Item.ItemNo=12345
मैं सबक्वेरी में WHERE Attribute.ItemNo=Item.ItemNo
को WHERE Attribute.ItemNo=12345
बदलना चाहते हैं, लेकिन मैं समझ नहीं करता है, तो यह संभव है:
मूल रूप से मैं इस किया है। मैं बार आ रही है "ORA-00904: 'आइटम' 'ItemNo':। अमान्य पहचानकर्ता"
संपादित करें:
मैं चाहता हूँ:
ठीक है, इस कारण है कि मैं संरचना इस तरह की जरूरत है "त्रुटि" रिकॉर्ड्स (जहां आइटम में कोई मूल्य गुम है) और "ठीक" रिकॉर्ड (जहां आइटम का मान है) की गिनती प्राप्त करने में सक्षम हो।
जिस तरह से मैंने इसे पहेली में सेट किया है, वह सही डेटा देता है। मुझे लगता है कि मैं बस सबकुछरी में मूल्य भरना समाप्त कर सकता हूं, क्योंकि यह शायद सबसे आसान तरीका होगा। क्षमा करें अगर मेरी डेटा संरचनाएं थोड़ी गड़बड़ी कर रही हैं। यदि आवश्यकता हो तो मैं समझा सकता हूं।
मेरे तालिकाओं हैं:
create table itemcountry(
itemno number,
country nchar(3),
imgroup varchar2(10),
imtariff varchar2(20),
exgroup varchar2(10),
extariff varchar2(20));
create table itemattribute(
attributeid varchar2(10),
tariffgroup varchar2(10),
tariffno varchar2(10));
create table icav(
itemno number,
attributeid varchar2(10),
value varchar2(10));
और मेरी क्वेरी अब तक है:
select itemno, country, imgroup, imtariff, im.error "imerror", im.ok "imok", exgroup, extariff, ex.error "exerror", ex.ok "exok"
from itemcountry
left outer join (select sum(case when icav.itemno is null then 1 else 0 end) error, sum(case when icav.itemno is not null then 1 else 0 end) ok, tariffgroup, tariffno
from itemattribute ia
left outer join icav on ia.attributeid=icav.attributeid
where (icav.itemno=12345 or icav.itemno is null)
group by tariffgroup, tariffno) im on im.tariffgroup=imgroup and imtariff=im.tariffno
left outer join (select sum(case when icav.itemno is null then 1 else 0 end) error, sum(case when icav.itemno is not null then 1 else 0 end) ok, tariffgroup, tariffno
from itemattribute ia
left outer join icav on ia.attributeid=icav.attributeid
where (icav.itemno=12345 or icav.itemno is null)
group by tariffgroup, tariffno) ex on ex.tariffgroup=exgroup and extariff=ex.tariffno
where itemno=12345;
यह भी एक SQL Fiddle में स्थापित किया है।
आप नहीं कर सकते .. आप क्या चुनना चाहते हैं? बाएं बाहरी जुड़ने के अलावा अन्य समाधान हो सकता है। – hkutluay
sqlfiddle – tedski