2010-05-25 8 views
5

मुझे दो वर्गमीटर के परिणामस्वरूप सामान्य coloumns c1, c2, c3 का चयन करना होगा।दो चयन विवरणों के सामान्य परिणाम को गठबंधन करने की आवश्यकता

1)

select c1, c2, c3,count(c3) from (select * from form_name 
where data_created >'1273446000' and data_creazione<'1274569200') 
group by c1,c2, c3 having count(c3)>1 

2)

select c1, c2, c3,count(c3) from (select * from form_name 
where data_created>'1272236400' and data_creazione<'1274569200') 
group by c1,c2, c3 having count(c3)>2 

मैं C1, C2 चयन करने की आवश्यकता, सी 3 सभी एक ही और आम दोनों क्वेरी के परिणाम में पाया।

यह कैसे किया जा सकता है ... क्या कोई मदद कर सकता है?

+0

आप एक – MUG4N

उत्तर

5

चयन सूची से count(c3) निकालते हैं तो वह अलग हो सकता है (HAVING क्लॉज़ इस की गारंटी देता है) और ओपी केवल C1, C2 और C3 तुलना करने के लिए चाहता है। यदि COUNT(c3) कॉलम अलग है, तो आम पंक्तियां आम हो सकती हैं? कोई नहीं या कुछ, यह अलग-अलग होगा। व्युत्पन्न तालिकाओं को भी हटाएं, वे आवश्यक नहीं हैं। तो कोशिश:

select 
    c1, c2, c3 
    from form_name 
    where data_created >'1273446000' and data_creazione<'1274569200' 
    group by c1,c2, c3 
    having count(c3)>1 
INTERSECT 
select 
    c1, c2, c3 
    from form_name 
    where data_created>'1272236400' and data_creazione<'1274569200' 
    group by c1,c2, c3 
    having count(c3)>2 
+0

हां..यह वही है जो मैं चाहता था ..... धन्यवाद केएम – Anup

0

आप व्युत्पन्न तालिकाओं का उपयोग कर सकते हैं और फिर अपने इच्छित परिणामों को प्राप्त करने के लिए उनसे जुड़ सकते हैं।

select a.c1, a.c2, a.c3, a.acount, b.bcount 
From 
(select c1, c2, c3, count(*) as acount from (select * from form_name 
where data_created >'1273446000' and data_creazione<'1274569200') 
group by c1,c2, c3 having count(c3)>1) a 
join 
(select c1, c2, c3, count(*) as bcount from (select * from form_name 
where data_created>'1272236400' and data_creazione<'1274569200') 
group by c1,c2, c3 having count(c3)>2)b 
    on a.c1 = b.c1 and a.c2 = b.c2 and a.c3 = b.c3 
2

क्या आपने 'यूनियन' के साथ 2 प्रश्नों में शामिल होने का प्रयास किया है?

उदाहरण के लिए।

select c1, c2, c3,count(c3) from (select * from form_name 
where data_created >'1273446000' and data_creazione<'1274569200') 
group by c1,c2, c3 having count(c3)>1  
union  
select c1, c2, c3,count(c3) from (select * from form_name 
where data_created>'1272236400' and data_creazione<'1274569200') 
group by c1,c2, c3 having count(c3)>2 
+0

करने के लिए दो प्रश्नों गठबंधन करने के लिए इस्तेमाल कर सकते हैं यूनिअन हाँ मैं कोशिश की ... लेकिन मैं केवल आम परिणाम चाहते हैं ..... अलग – Anup

+0

यूनिअन सभी पंक्तियों देता है की तरह, ओपी केवल चाहता है आम पंक्तियां –

2

मुझे लगता है कि INTERSECT आपकी समस्या का समाधान करेगा। अधिक इंफोस here

select c1, c2, c3,count(c3) from (select * from form_name 
where data_created >'1273446000' and data_creazione<'1274569200') 
group by c1,c2, c3 having count(c3)>1  
INTERSECT 
select c1, c2, c3,count(c3) from (select * from form_name 
where data_created>'1272236400' and data_creazione<'1274569200') 
group by c1,c2, c3 having count(c3)>2 
+0

इंटरसेक्ट सामान्य पंक्तियां देता है, लेकिन यह क्वेरी काम नहीं करेगी, क्यों मेरा जवाब देखें। –

संबंधित मुद्दे