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

केस के साथ MYSQL लेफ्ट जॉइन ऑप्टिमाइजेशन

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

SELECT a.folderid, a.foldername, a.contenttype, 
    (CASE a.contenttype
        WHEN 'file' THEN b.descriptor
        WHEN 'link' THEN c.descriptor
        WHEN 'extfile' THEN d.descriptor
        WHEN 'video' THEN e.descriptor
        ELSE f.descriptor
    END CASE) AS descriptor
FROM t_folders a
LEFT JOIN t_files b ON a.contenttype = 'file' AND a.contentid = b.fileid
LEFT JOIN t_links c ON a.contenttype = 'link' AND a.contentid = c.linkid
LEFT JOIN t_extfiles d ON a.contenttype = 'extfile' AND a.contentid = d.extfileid
LEFT JOIN t_videos e ON a.contenttype = 'video' AND a.contentid = e.videoid
LEFT JOIN t_exams f ON a.contenttype = 'exam' AND a.contentid = f.examid
WHERE a.folderid = $folderId
ORDER BY a.folderid DESC

यदि प्रत्येक t_files, t_links, आदि तालिकाओं में फ़ोल्डर_आईडी फ़ील्ड है, तो मैं इन तालिकाओं पर एक यूनियन करने का भी प्रयास करूंगा और फिर फ़ोल्डर और फ़ोल्डरनाम प्राप्त करने के लिए t_folders के साथ परिणाम में शामिल होना छोड़ दूंगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. @OnDelete हाइबरनेट एनोटेशन MySql के लिए ON DELETE CASCADE उत्पन्न नहीं करता है

  2. केवल एक तालिका से उपयोगकर्ताओं का चयन करें यदि दूसरे में नहीं

  3. घातक त्रुटि:mysqld को रूट के रूप में चलाने का तरीका जानने के लिए कृपया मैनुअल का सुरक्षा अनुभाग पढ़ें

  4. ER_NOT_SUPPORTED_AUTH_MODE - MySQL सर्वर

  5. SQL त्रुटि (1292):गलत डबल मान काटा गया:'6893Order'