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

एसक्यूएल 6 टेबल में शामिल हो रहा है

चूंकि appointmnent_id Appointment . की प्राथमिक कुंजी है , इस तालिका में एक 1:N . है सभी 6 तालिकाओं के साथ संबंध।

यही वह स्थिति है जहां इन 6 तालिकाओं में शामिल होने से डुप्लिकेट डेटा वाली कई पंक्तियां उत्पन्न होंगी , यह एक Cartesian Product की तरह है . उदाहरण के लिए यदि (केवल एक id=46 . के लिए ), वहाँ हैं:

  • PatientInvestigation के लिए 3 पंक्तियाँ
  • PatientTreatmentMedicine . के लिए 6 पंक्तियाँ
  • PatientFindings के लिए 4 पंक्तियाँ
  • PatientDiagnosis के लिए 2 पंक्तियाँ
  • PatientCC के लिए 2 पंक्तियां
  • PatientAdvice के लिए 5 पंक्तियां

आपको 3x6x4x2x2x5 =1440 मिलेगा परिणाम सेट में पंक्तियाँ, जबकि आपको केवल 3+6+4+2+2+5 (+1) =23 की आवश्यकता है पंक्तियाँ। यह आवश्यकता से 60 गुना अधिक पंक्तियाँ (और कई अधिक स्तंभों के साथ) है।

यह बेहतर है यदि आप प्रत्येक क्वेरी में 6 अलग-अलग प्रश्नों को एक जॉइन टू वन (6 में से) टेबल के साथ करते हैं (और आधार तालिका से डेटा प्राप्त करने के लिए एक और क्वेरी Appointment ) और आवेदन कोड में 6 प्रश्नों के परिणामों को संयोजित करें . पहली तालिका में शामिल होने के लिए आधार क्वेरी और क्वेरी के लिए उदाहरण:

आधार तालिका :

SELECT 
    a.appointment_id, 
    a.patient_id
FROM 
    Appointment AS a
WHERE
    a.appointment_id = 46

रोगी जांच में शामिल हों-1 :

SELECT 
    pi.investigation_name, 
    pi.investigation_id
FROM 
    Appointment AS a
      JOIN
    PatientInvestigation AS pi
        ON pi.appointment_id = a.appointment_id
WHERE
    a.appointment_id = 46


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में वैकल्पिक पैरामीटर

  2. 1 कॉलम के आधार पर समूहबद्ध करते हुए केवल 50 से अधिक पंक्तियों के पुराने रिकॉर्ड हटाएं

  3. सभी तालिकाओं में सभी विदेशी कुंजी बाधाओं को कैसे छोड़ें?

  4. सूची को अल्पविराम से अलग किए गए स्ट्रिंग में सारांशित करें

  5. SQL सर्वर:sp_who2 का आउटपुट फ़िल्टर करें