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

एसक्यूएल इन क्लॉज - उन तत्वों में वापस आएं जो मेल नहीं खाते

ऐसा लगता है कि आपके Rooms तालिका में केवल सक्रिय व्यवसायों के लिए डेटा होता है। यह कई मायनों में समझ में आता है, क्योंकि आप उन लोगों के बारे में जानकारी संग्रहीत नहीं करना चाहते जो वास्तव में एक कमरे में नहीं हैं। लेकिन यह आपके वांछित परिणाम सेट को उत्पन्न करने के लिए एक चुनौती है, क्योंकि लापता कमरे Rooms में मौजूद नहीं हैं ।

यहां एक विकल्प "कैलेंडर टेबल" दृष्टिकोण है। आप LEFT JOIN आपके वर्तमान Rooms . के सभी कमरों वाली एक तालिका तालिका, और फिर लापता रहने वालों को nobody . के रूप में लेबल करें ।

SELECT t1.Room,
       COALESCE(t2.OccupantName, 'Nobody') AS OccupantName
FROM
(
    SELECT "Room 1" AS Room
    UNION ALL
    SELECT "Room 2"
    UNION ALL
    SELECT "Room 3"
    UNION ALL
    SELECT "Room 4"
) AS t1
LEFT JOIN Rooms AS t2
    ON t1.Room = t2.Rooms

ध्यान दें कि मैंने सभी कमरों के लिए एक टेबल बनाने के लिए एक लाइन सबक्वेरी का उपयोग किया था। व्यवहार में, आप इस जानकारी से युक्त कार्यक्षेत्र में एक वास्तविक तालिका बना सकते हैं।

यहां डेमो करें:

SQLFiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP में हाइबरनेट के समान कुछ भी?

  2. mysql :दिनांक सीमा की जाँच करें

  3. क्या पीडीओ पंक्ति गणना () अद्यतन क्वेरी के बाद कोई बदलाव नहीं किए गए और मौजूदा पंक्ति के बीच अंतर दिखा सकता है?

  4. प्रत्येक डेटाबेस को एक अलग फ़ाइल में बैकअप करने के लिए mysqldump के लिए बैच-फ़ाइल

  5. HTML - बिना रिफ्रेश किए पेज की सामग्री बदलें\अपडेट करें\पेज को फिर से लोड करें