Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सीक्वेलाइज़:मल्टीपल जहाँ क्लॉज

मुझे लगता है कि आप क्वेरी करने के सीक्वेलाइज़ तरीके के बारे में पूछते हैं। मुझे यकीन नहीं है कि मैं आपके प्रश्न को सही ढंग से समझता हूं। आप दो प्रश्नों की तलाश में हैं:

  • अनुसरण किए गए उपयोगकर्ताओं के सभी लेखों को क्वेरी करें,
  • क्वेरी सब्सक्राइब्ड देश/टैग/विशिष्ट उपयोगकर्ता का लेख,

मैं मॉडलों के बीच बने जुड़ाव से शुरू करता हूं।

// in User model definition
User.belongsToMany(User, { as: 'Followers', through: 'Followers', foreignKey: 'userId', otherKey: 'followId' });
User.hasMany(Subscribe, { foreignKey: 'userId' });
User.hasMany(Article, { foreignKey: 'userId' });

उपरोक्त संबद्धता के उपयोग से अब हम अनुसरण किए गए उपयोगकर्ताओं के सभी लेखों को क्वेरी करने में सक्षम हैं

models.User.findByPrimary(1, {
    include: [
        {
            model: models.User,
            as: 'Followers',
            include: [ models.Article ]
        }
    ]
}).then(function(user){
    // here you have user with his followers and their articles
});

उपरोक्त क्वेरी के समान परिणाम उत्पन्न होगा

{
    id: 1,
    Followers: [
        {
            id: 4,
            Articles: [
                {
                    id: 1,
                    title: 'article title' // some example field of Article model
                }
            ]
        }
    ]
}

यदि आप विशिष्ट उपयोगकर्ता द्वारा सब्सक्राइब किए गए देश/टैग/लेख को क्वेरी करना चाहते हैं, तो आपको Subscribe में अन्य संबद्धताएं बनानी होंगी मॉडल

// in Subscribe model definition
Subscribe.belongsTo(Tag, { foreignKey: 'tagId' });
Subscribe.belongsTo(Article, { foreignKey: 'articleId' });
Subscribe.belongsTo(Country, { foreignKey: 'payId' });

अब हमारे पास आपके द्वारा मांगी गई दूसरी क्वेरी करने के लिए आवश्यक सभी एसोसिएशन हैं

models.User.findByPrimary(1, {
    include: [
        {
            model: models.Subscribe,
            include: [ models.Tag, models.Country, models.Article ]
        }
    ]
}).then(function(user){
    // here you get user with his subscriptions
});

इस उदाहरण में आप उपयोगकर्ता को उसकी सभी सदस्यताओं के साथ user.Subscribes . के माध्यम से एक्सेस करते हैं , जिसमें नेस्टेड विशेषताएँ होंगी Tag , Country और Article . यदि उपयोगकर्ता ने Tag की सदस्यता ली है , दोनों Country और Article होगा NULL इस मामले में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL बनाम MySQL, एक तुलना

  2. मैं डेटाबेस स्टेटमेंट बनाने में एक वेरिएबल का उपयोग कैसे करूं?

  3. MySQL में INDEX बनाम KEY का उपयोग करने में क्या अंतर है?

  4. मैं प्रथम स्तर की श्रेणी को केवल एक बार प्रदर्शित करने के लिए कैसे प्राप्त करूं?

  5. पंक्ति योग (समूह द्वारा) के साथ परिणामसेट की अंतिम पंक्ति में सभी कॉलम मानों का योग प्राप्त करने के लिए SQL क्वेरी