अगर मैं तर्क को सही ढंग से समझता हूं, तो समस्या दो जुड़ने के कारण कार्टेशियन उत्पाद है। आपकी क्वेरी का पालन करना थोड़ा कठिन है, लेकिन मुझे लगता है कि सहसंबंधित उपश्रेणियों के साथ इरादे को बेहतर ढंग से संभाला जाता है:
select k.*,
(select sum(cost)
from ad_group_keyword_network n
where n.event_date >= '2015-12-27' and
n.ad_group_keyword_id = 1210802 and
k.id = n.ad_group_keyword_id
) as cost,
(select sum(clicks)
from keyword_click c
where (c.date is null or c.date >= '2015-12-27') and
k.keyword_id = c.keyword_id
) as clicks
from ad_group_keyword k
where k.status = 2 ;
यहां संबंधित SQL Fiddle है।
संपादित करें:
उप-चयन group by
. से तेज़ होना चाहिए असंगठित डेटा पर। हालांकि, आपको सही अनुक्रमणिका की आवश्यकता है:ad_group_keyword_network(ad_group_keyword_id, ad_group_keyword_id, event_date, cost)
और keyword_click(keyword_id, date, clicks)
।