का उपयोग कर डेटा लाने के लिए MySQL क्वेरी को अनुकूलित करना मैं Google चार्ट एपीआई का उपयोग करके उत्पाद बिक्री रिपोर्ट के लिए एक लाइन चार्ट बना रहा हूं और डेटा को प्रति दिन आधार पर अलग कर रहा हूं, मूल रूप से एक ही लूप में एक ही क्वेरी को चलाने के साथ प्रत्येक दिन गोंद के रूप में यूनियन का उपयोग कर।समय सीमा
उदा। यूनियन का उपयोग करके 365 बार पूरे वर्ष की एक रिपोर्ट क्वेरी दोहराएगी।
मुझे लगता है कि यह एक सबसे अच्छा अभ्यास नहीं है- उदाहरण के लिए यदि कोई भी दयालु होगा और मुझे इस क्वेरी को अनुकूलित करने के सही दिशा में इंगित करेगा, तो मैं इसकी सराहना करता हूं।
SELECT SUM(op.qty) AS qty
FROM uc_order_products op
LEFT JOIN uc_orders o ON o.order_id = op.order_id
LEFT JOIN node n ON n.nid = op.nid
LEFT JOIN node_type nt ON nt.type = n.type
WHERE (o.created > 1247695200) AND (o.created < 1247781600)
AND (o.order_status = 'completed')
AND (nt.type = 'book' OR nt.type = 'digital_movie')
UNION ALL
SELECT SUM(op.qty) AS qty
FROM uc_order_products op
LEFT JOIN uc_orders o ON o.order_id = op.order_id
LEFT JOIN node n ON n.nid = op.nid
LEFT JOIN node_type nt ON nt.type = n.type
WHERE (o.created > 1247781600) AND (o.created < 1247868000)
AND (o.order_status = 'completed')
AND (nt.type = 'book' OR nt.type = 'digital_movie')
UNION ALL
SELECT SUM(.......
सभी त्वरित उत्तर के लिए धन्यवाद! jspcal से क्वेरी उदाहरण के साथ, अपनी क्वेरी इस तरह समाप्त हो गया:
SELECT SUM(op.qty) AS qty, DATE_FORMAT(FROM_UNIXTIME(o.created),'%d-%m-%Y') AS day
FROM uc_order_products op
LEFT JOIN uc_orders o ON o.order_id = op.order_id
LEFT JOIN node n ON n.nid = op.nid
LEFT JOIN node_type nt ON nt.type = n.type
WHERE (o.created > 1247695200) AND (o.created < 1263596400)
AND (o.order_status = 'completed')
AND (nt.type = 'book' OR nt.type = 'digital_movie')
GROUP BY day
और पीएचपी के साथ, मैं एक पूरी तिथि सीमा सरणी (मिलान सरणी कुंजी strtotime($data->day)
साथ क्वेरी परिणाम से) गठबंधन कोई बिक्री के साथ दिन मिलता है।
शायद मुझे याद आ रही है यहां कुछ नहीं है लेकिन आप केवल एक क्वेरी क्यों नहीं चलाएंगे जहां बनाया गया> आपकी समय सीमा की शुरुआत और <आपकी समय सीमा का अंत? –