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

लापता भाषा फ़ॉलबैक के साथ mysql अनुवाद तालिका

ठीक है, तो निम्न क्वेरी शायद सबक्वायरी के बिना की जा सकती है, लेकिन इसके बजाय एक जॉइन के साथ। मुझे विश्वास है कि क्वेरी अनुकूलक ऐसा करता है, लेकिन मैं इस बारे में निश्चित नहीं हूं।

SELECT l.name as language,
       (SELECT cl.name 
        FROM country_languages cl 
        WHERE cl.country_id=[the wanted country id]
        ORDER BY cl.language_id=l.id DESC,
                 cl.language_id=1 DESC
        LIMIT 1) as country_name
FROM languages l

इस संस्करण में language_id 1 को पसंदीदा फ़ॉलबैक के रूप में उपयोग किया जाता है, आप शायद इसी तरह से और भाषाएं जोड़ सकते हैं। FIND_IN_SET का उपयोग करना इसके बजाय दूसरे क्रम का मानदंड भी काम करेगा (FIND_IN_SET(cl.language_id,'1,2,3') DESC या जो भी ऑर्डर आप पसंद करेंगे)।

बेशक यह प्रश्न अभी एक निश्चित देश_आईडी के लिए है। इसे इसी तरह से कई देशों के लिए एक और जॉइन के साथ बढ़ाया जा सकता है:

SELECT l.name as language,
       (SELECT cl.name 
        FROM country_languages cl 
        WHERE cl.country_id=c.id 
        ORDER BY cl.language_id=l.id DESC,
                 cl.language_id=1 DESC
        LIMIT 1) as country_name
FROM countries c
JOIN languages l

उपश्रेणियों का एक विकल्प यह होगा कि आप दो बार देश_भाषाओं में शामिल हों, और केवल पहले वाले का चयन करें जो अशक्त न हो (जो संभवत:क्लीनर समाधानों में से एक है):

SELECT l.name as language, 
       COALESCE(first.name, second.name) as country_name
FROM countries c
JOIN languages l
LEFT JOIN country_languages first ON 
        (first.country_id=c.id AND first.language_id=l.id)
LEFT JOIN country_languages second ON
        (second.country_id=c.id AND second.language_id=1)

अगर भाषा आईडी 1 आपकी फॉलबैक भाषा है। कई फ़ॉलबैक भाषाएं प्रदान करने के लिए इसका विस्तार भी किया जा सकता है ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. myisam 'चयन' क्वेरी से निपटने के दौरान भी टेबल पर टेबल-लॉक रखें?

  2. MySQL ग्रुप बाय एंड ऑर्डर बाय

  3. अपरिवर्तनीय नाम 'MySql.Data.MySqlClient' के साथ ADO.NET प्रदाता या तो मशीन या एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल में पंजीकृत नहीं है

  4. MySQL रोलअप का उपयोग कैसे करें

  5. SQL इनर जॉइन - SQL और MySQL में 3 टेबल्स को कैसे जॉइन करें?