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

mysql - एक जटिल कथन में बाहरी जुड़ाव लागू करना

मैं इसे हासिल करने का केवल एक ही तरीका सोच सकता हूं। GROUP_CONCAT . के संयोजन के साथ और SUBSTRING_INDEX आपकी वर्तमान कार्यशील क्वेरी पर। उदाहरण क्वेरी नीचे:

SELECT    person_id,
          SUBSTRING_INDEX(GROUP_CONCAT(a.name ORDER BY a.score DESC),',',1) sname, 
          SUBSTRING_INDEX(GROUP_CONCAT(a.score ORDER BY a.score DESC),',',1) max_score FROM 
(SELECT   people.person_id,
          names.name,
          CASE 
          WHEN people.person_default_name_id=names.name_id AND language_scripts.script_id = '1' THEN 3
          WHEN names.language_id = '1' THEN 2
          WHEN language_scripts.script_id = '1' THEN 1
          ELSE 0
          END AS score
FROM      `people` 
LEFT JOIN `names` ON names.person_id=people.person_id
LEFT JOIN `languages` ON names.language_id = languages.language_id
LEFT JOIN `language_scripts` ON languages.language_id = language_scripts.language_id) a 
GROUP BY person_id;

मैंने पहेली में भी क्वेरी का परीक्षण किया http://sqlfiddle.com/#!9 /54ce8/33

थोड़ा सा स्पष्टीकरण:

  1. GROUP_CONCAT ORDER BY . के जोड़ के साथ नाम और स्कोर पर शर्त - ध्यान दें कि ORDER BY दोनों GROUP_CONCAT . में समान होना चाहिए ।
  2. SUBSTRING_INDEX फ़ील्ड में अल्पविराम (,) द्वारा अलग किया गया पहला मान प्राप्त करने के लिए।


  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. mysql - पंक्तियों बनाम कॉलम प्रदर्शन बनाना

  3. MySQL:आईडी पुनर्प्राप्त करना जहां बिल्कुल 2 पंक्तियां समान आईडी साझा करती हैं लेकिन अलग-अलग उपयोगकर्ता आईडी होती हैं

  4. PHP फॉर्म mySQL डेटाबेस में सम्मिलित नहीं हो रहा है

  5. मैंने PHP 5.6 में [] के साथ PHP 7.1 में सरणियाँ बनाईं, घातक त्रुटि दी