MySQL Join with a subquery to select only one row from joined table -


मान लीजिए कि दो टेबल हैं:

टेबल पार्ट्स:

  स्थान पार्टनम Descrip -------- ------- -------- Whse1 एबीसी फ्रोबबिट्ज व्हेस 2 एबीसी फ्रोबबिट्ज़ व्हीएस 3 डीईएफ़ विजेट व्हीएस 3 डीईफ़ विजेट   

तालिका स्थिति: <पूर्व> स्थान भाग की स्थिति --------- ------- -------------- * डिफ़ॉल्ट * एबीसी तैयार शिप करने के लिए * डिफ़ॉल्ट * डीएफ़ तैयार करने के लिए Whse1 abc Backordered

अधिकांश मामलों में, डिफ़ॉल्ट स्थिति का उपयोग किया जाना चाहिए।

स्थिति प्राप्त करने के लिए, क्वेरी शायद जैसे:

  SELECT p.Location, p.PartNum, p.Descrip, s.Status से भागों पी LEFT JOIN स्थिति एस एस.पार्टन्यूम = पी। भाग और एस। स्थान = (SELECT मैक्स (स्थान) से स्थिति s1 जहां s1.PartNum = p.PartNum और s1. स्थान ('* डिफ़ॉल्ट *', पी। स्थान))   

सवाल यह है, यह है सबसे कुशल (या कम से कम काफी कुशल) ऐसा करने का तरीका? मेरी वास्तविक एप्लिकेशन में एक ही क्वेरी में 7 टेबल शामिल हो सकते हैं।

मुझे लगता है कि आप < कोड> सीमा 1 के साथ आदेश नीचे के रूप में:

  SELECT p.Location, p.PartNum, p.Descrip, s.Status FROM parts p LEFT JOIN स्थिति एस ओएस। पार्टन्यू = पी। पार्टैम और एस। स्थान = (स्थान का चयन करें स्थिति से एस 1 जहां एस 1। पार्टैम = पी। पार्टम एसडीए द्वारा s1। स्थान एएससी सीमा 1);   

मान लें कि * डिफ़ॉल्ट * पुनर्प्राप्ति के अनुसार शीर्ष पर आएगा।

Comments

Popular posts from this blog

Python SQLAlchemy:AttributeError: Neither 'Column' object nor 'Comparator' object has an attribute 'schema' -

java - How not to audit a join table and related entities using Hibernate Envers? -

mongodb - CakePHP paginator ignoring order, but only for certain values -