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

ये टेबल कैसे संबंधित हैं?

एक आदेश में हमेशा एक ग्राहक होगा, नहीं? तो यह लेफ्ट नहीं बल्कि इनर जॉइन है।

उन्हें जो लिंक करता है वह है customer_id. तो आपका SQL सरल है:

select o.order_number, o.customer_ID, o.address, 
    c.first_name, c.last_name
from orders o
inner join customer c on o.customer_ID = c.customer_ID;

इकाई संबंध:

ऑर्डर CustomerCustomer_Id 0...N>---+ 1 Customer_Id... ...

यह EF संबंध MS SQL सर्वर के नमूना डेटाबेस नॉर्थविंड से है। उस नमूना डेटाबेस में, आपकी तरह ही, ग्राहक और आदेश हैं। ग्राहक और ऑर्डर तालिकाएं दोनों तालिकाओं में CustomerId फ़ील्ड के माध्यम से संबंधित हैं (यह ग्राहकों में प्राथमिक कुंजी है, और ऑर्डर तालिका में विदेशी कुंजी है)। जब आप मॉडल करते हैं कि एक इकाई संबंध के रूप में आपके पास उपरोक्त आरेख है। ग्राहक इकाई के पास एक "आदेश" नेविगेशन गुण (ग्राहक आईडी के माध्यम से) होता है जो किसी विशेष ग्राहक के आदेश की ओर इशारा करता है। और ऑर्डर इकाई में एक नेविगेशन गुण होता है जो उसके ग्राहक को इंगित करता है (फिर से CustomerId के माध्यम से)। संबंध 1 से 0 या कई (1 - *) है, जिसका अर्थ है कि ग्राहक के पास 0 या अधिक ऑर्डर हो सकते हैं।

जब आप ग्राहक की ओर से जॉइन करते हैं, तो आप लेफ्ट जॉइन का उपयोग करते हैं "यदि आप सभी ग्राहकों को देखना चाहते हैं, भले ही उनके पास ऑर्डर हों या नहीं" - 0 या अधिक ऑर्डर। यदि आप केवल ऑर्डर वाले लोगों को देखना चाहते हैं तो आप इनर जॉइन का उपयोग करते हैं।

जब आप ऑर्डर की ओर से जॉइन करते हैं, तो ऑर्डर में एक ग्राहक होना चाहिए ताकि वह लेफ्ट जॉइन न हो सके। यह एक आंतरिक जुड़ाव है।

आप कनेक्टिंग CustomerId फ़ील्ड का उपयोग करके दोनों पक्षों से संबंध की जांच कर सकते हैं।

आपके पास "ऑर्डर आईडी, ग्राहक आईडी" के लिए एक अलग तालिका नहीं होगी क्योंकि यह कई से अधिक संबंध नहीं है (यह शुद्ध अनावश्यकता होगी और सामान्यीकरण विसंगतियां पैदा करेगी)।

आशा है कि यह अब और स्पष्ट हो गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL जॉइन NULL फ़ील्ड लौटाता है

  2. एसक्यूएल क्वेरी:बच्चों के बिना माता-पिता बनने के लिए टैग कैसे बनाएं?

  3. मैं एक MySQL टेबल पर कस्टम चेक बाधा कैसे जोड़ूं?

  4. MySQL 5.7 से MySQL 8 में अपग्रेड करने के लिए टिप्स

  5. पोटीन के साथ डेटाबेस में sql.gz फ़ाइल आयात और सम्मिलित करें