मेरे पास है, कहते हैं, 2 तालिकाओं
-
UK_Order
औरUK_Order_Item
-
F_Order
औरF_Order_Item
<कोड> UK_Order (और F_Order) के पास फ़ील्ड हैं: आईडी
, ऑर्डरस्टैटस
। UK_Order_Item
(और F_Order_Item) में फ़ील्ड हैं: orderId
, मॉडल
, और order_quantity
।
मैं यूके और एफ के माध्यम से बेचने वाले विभिन्न मॉडलों की कुल संख्या वापस करने के लिए एसक्यूएल लिखने की कोशिश कर रहा हूं लेकिन नहीं कर सकता
का चयन करें मॉडल, SUM (order_quantity) quantityOrdered के रूप में uk_order_item से कहां OrderID में (चुनिंदा आईडी से uk_order कहां orderStatus = 'अपूर्ण') मॉडल के आधार पर ग्रुप और भी
का चयन करें मॉडल, SUM (order_quantity) quantitySold के रूप में f_order_item से कहां OrderID में (f_order से चयन आईडी जहां orderStatus = 'अपूर्ण') मॉडल के आधार पर ग्रुप
वापस आ रहा है उदा:
आदर्श, मात्रा निरंतर वोक्सवैगन, 3 फोर्ड, 2 सिट्रोन, 4 ...
और उसके बाद ब्रिटेन और एफ में बेचा volkwagens की कुल संख्या को खोजने के लिए, मैं एक छोटा सा calcluation (यानी volkswagenCount = ब्रिटेन के Volkwagen के quantitySold + F का Volkwagen के quantitySold
दूसरे शब्दों में क्या करना है, मेरे अलग-अलग क्वेरी वापसी यूके के लिए बेचा कुल मॉडल, और एफ (रेंट) - मैं जर्मनी, स्पेन आदि के लिए इस प्रश्न को दोहराता हूं। लेकिन पूरे यूरोप (यूके, फ्रांस, जर्मनी एट में बेचे जाने वाले प्रत्येक मॉडल के लिए कुल संख्या वापस करने का एक तरीका है सी।)?
डीबी डिजाइन
मैं अपने डीबी डिजाइन को फिर से सोचूंगा। सभी देशों सहित एकीकृत तालिका संभवतः एक बेहतर विचार होगी। तो आपके पास सभी देशों के लिए एकल टेबल होंगे:
order_item आदेश
बस तालिका आदेश में
। country_id
जोड़ें
सरल क्वेरी
IN
निर्माण बेकार नहीं जटिल है सरल और तेजी से:
का चयन करें oi.model, योग (oi.order_quantity) uk_order ओ से quantity_ordered के रूप में uk_order_item Oi पर oi.orderid = o.id कहां o.orderstatus = 'अपूर्ण' समूह में शामिल हों 1 से;
आपके पास अलग-अलग तालिकाओं हैं, लेकिन अलग-अलग गणनाओं को जोड़ने से ज्यादा कुछ भी सरल या तेज नहीं होगा:
SELECT मॉडल, राशि (मात्रा_आर्डेड) कुल_गुणित_आर्डर्ड FROM (चुनिंदा मॉडल, योग (order_quantity) के रूप में uk_order ओ से quantity_ordered uk_order_item शामिल हों Oi पर oi.orderid = o.id कहां o.orderstatus = 'अपूर्ण' द्वारा 1 यूनिअन सभी का चयन मॉडल, योग (order_quantity) के रूप में से quantity_ordered ग्रुप f_order ओ में शामिल हों F_order_item oi ON oi.orderid = o.id WHERE o.orderstatus = 'अपूर्ण' ग्रुप द्वारा 1) उप ग्रुप द्वारा 1;
आप हो सकता है बस उसे एक एकल व्युत्पन्न सारणी में पंक्तियों को एकजुट करके UNION ALL
के साथ सम्मिलित करें:
< कोड> SELECT मॉडल, sum (quantity_ordered) के रूप में total_quantity_ordered FROM (SELECT मॉडल, order_quantity के रूप में मात्रा_ऑर्डर्ड एफडी यूके_ऑर्डर ओ JOIN uk_order_item oi ओआई.ऑर्डिड = ओ.आईड पर जहां ओ। ऑर्स्टस्टैटस = 'अपूर्ण' यूनियन सभी का चयन मॉडल, क्रम_गुणता quantity_ordered FROM F_order o JOIN f_order_item oi ON oi.orderid = o.id WHERE o.orderstatus = 'अपूर्ण') उप समूह द्वारा 1;
लेकिन मुझे संदेह है कि यह तेज़ी से हो जाएगा।
उद्धृत या नहीं, पोस्टग्रेज़ में CaMeL केस पहचानकर्ता का उपयोग करने के लिए और मेरी स्थायी सलाह नहीं है । आपका जीवन आसान बनाता है।
Comments
Post a Comment