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

Node.js पर Sequelize का उपयोग करके जॉइन क्वेश्चन कैसे करें

जबकि स्वीकृत उत्तर तकनीकी रूप से गलत नहीं है, यह मूल प्रश्न का उत्तर नहीं देता है और न ही टिप्पणियों में अनुवर्ती प्रश्न का उत्तर देता है, जिसे मैं यहां ढूंढ रहा था। लेकिन मैंने इसे समझ लिया, तो यह रहा।

यदि आप उन सभी पोस्ट को ढूंढना चाहते हैं जिनमें उपयोगकर्ता हैं (और केवल वे जिनके पास उपयोगकर्ता हैं) जहां SQL इस तरह दिखेगा:

SELECT * FROM posts INNER JOIN users ON posts.user_id = users.id

जो शब्दार्थ रूप से ओपी के मूल SQL के समान ही है:

SELECT * FROM posts, users WHERE posts.user_id = users.id

तो आप यही चाहते हैं:

Posts.findAll({
  include: [{
    model: User,
    required: true
   }]
}).then(posts => {
  /* ... */
});

सत्य के लिए आवश्यक सेटिंग एक आंतरिक जुड़ाव बनाने की कुंजी है। यदि आप एक बायां बाहरी जुड़ाव चाहते हैं (जहां आपको सभी पोस्ट मिलते हैं, भले ही कोई उपयोगकर्ता जुड़ा हुआ हो) तो गलत को बदलना आवश्यक है, या इसे छोड़ दें क्योंकि यह डिफ़ॉल्ट है:

Posts.findAll({
  include: [{
    model: User,
//  required: false
   }]
}).then(posts => {
  /* ... */
});

यदि आप उन उपयोगकर्ताओं से संबंधित सभी पोस्ट ढूंढना चाहते हैं, जिनका जन्म वर्ष 1984 में है, तो आप चाहते हैं:

Posts.findAll({
  include: [{
    model: User,
    where: {year_birth: 1984}
   }]
}).then(posts => {
  /* ... */
});

ध्यान दें कि आवश्यक है डिफ़ॉल्ट रूप से सत्य है जैसे ही आप एक खंड जोड़ते हैं।

यदि आप सभी पोस्ट चाहते हैं, भले ही कोई उपयोगकर्ता संलग्न हो, लेकिन यदि कोई उपयोगकर्ता है तो केवल 1984 में पैदा हुए, फिर आवश्यक फ़ील्ड को वापस इसमें जोड़ें:

Posts.findAll({
  include: [{
    model: User,
    where: {year_birth: 1984}
    required: false,
   }]
}).then(posts => {
  /* ... */
});

यदि आप सभी पोस्ट चाहते हैं जहां नाम "सनशाइन" है और केवल अगर यह 1984 में पैदा हुए उपयोगकर्ता से संबंधित है, तो आप यह करेंगे:

Posts.findAll({
  where: {name: "Sunshine"},
  include: [{
    model: User,
    where: {year_birth: 1984}
   }]
}).then(posts => {
  /* ... */
});

यदि आप सभी पोस्ट चाहते हैं जहां नाम "सनशाइन" है और केवल अगर यह उस उपयोगकर्ता से संबंधित है जो उसी वर्ष पैदा हुआ था जो पोस्ट पर पोस्ट_इयर विशेषता से मेल खाता है, तो आप यह करेंगे:

Posts.findAll({
  where: {name: "Sunshine"},
  include: [{
    model: User,
    where: ["year_birth = post_year"]
   }]
}).then(posts => {
  /* ... */
});

मुझे पता है, इसका कोई मतलब नहीं है कि कोई व्यक्ति जिस वर्ष वे पैदा हुए थे, उस वर्ष एक पोस्ट करेंगे, लेकिन यह सिर्फ एक उदाहरण है - इसके साथ जाओ। :)

मैंने इसे (ज्यादातर) इस दस्तावेज़ से समझ लिया:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल:प्रति समूह अधिकतम रिकॉर्ड खोजें

  2. तालिका पंक्ति गणना प्राप्त करने का सबसे कारगर तरीका

  3. ASP.NET उपयोग SqlConnection MySQL कनेक्ट करें

  4. T-SQL के WITH TIES के लिए MySQL का विकल्प

  5. MySQL में मनी वैल्यू स्टोर करने के लिए बेस्ट डेटा टाइप