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

मैं अपने SQL कथन में तीसरी तालिका में कैसे शामिल हो सकता हूं जो 0 गिनती वस्तुओं को खोए बिना COUNT लौटाता है?

LEFT JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId
WHERE m.PassedMedical = 1

यह विरोधाभासी है। आप कह रहे हैं कि यह एक लेफ्ट जॉइन है, इसलिए मेडिकल रिकॉर्ड मौजूद नहीं होना चाहिए, लेकिन फिर कह रहे हैं कि रिकॉर्ड वास्तव में मौजूद होना चाहिए और पासमेडिकल के रूप में 1 होना चाहिए। तो आपका लेफ्ट जॉइन वास्तव में एक इनर जॉइन बन जाता है, और इसी तरह, चूंकि आपके पास एक MEDICALTESTS पंक्ति होनी चाहिए, आपके पास एक PLAYERS रो भी होनी चाहिए, ताकि यह भी एक इनर जॉइन बन जाए।

इसके बजाय इसे आजमाएं:

INNER JOIN MEDICALTESTS m ON p.PlayerId = m.PlayerId and m.PassedMedical = 1

सुनिश्चित नहीं है कि SQL सर्वर फू लेफ्ट जॉइन बार इनर जॉइन बाज़ से कैसे व्याख्या करता है ... आप इसे फू लेफ्ट जॉइन (बार इनर जॉइन बाज़) के रूप में व्याख्या करना चाहते हैं। यदि वह काम नहीं करता है, तो इसके बजाय उप-चयन का उपयोग करें; शामिल न हों, बस जोड़ें:

WHERE p.PlayerId IS NULL or (select PassedMedical from MEDICALTESTS m where m.PlayerId=p.PlayerID) = 1 

आशा है कि यह SQL सर्वर के साथ मेरी परिचितता की कमी के बावजूद मदद करता है।



  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. SQL सर्वर (T-SQL उदाहरण) में 'time' को 'smalldatetime' में बदलें

  3. CHARINDEX () फ़ंक्शन SQL सर्वर (T-SQL) में कैसे काम करता है

  4. मैं एसक्यूएल सर्वर के साथ पहले अद्यतन ट्रिगर कैसे कर सकता हूं?

  5. पहचान विशिष्टता के लिए तालिका को कैसे बदलें पहचान SQL सर्वर है