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

3 टेबल के साथ कॉम्प्लेक्स आईएफ स्टेटमेंट

आप जिस फाइटर_आईडी की तलाश कर रहे हैं उसे कॉलम_बी में स्विच करने के लिए कंडीशनल के साथ एक उप-चयन का उपयोग करें, अगर यह कॉलम_बी में है, तो यह आपके संचालन को सरल करता है और बाहरी क्वेरी में शामिल होता है:

SELECT
    (
        CASE
            WHEN a.winner = a.f_a THEN 'Win'
            WHEN a.winner = a.f_b THEN 'Loss'
            WHEN a.winner IS NULL THEN a.method
        END
    ) AS result,
    b.name AS opponent,
    a.method AS method,
    c.event_name AS event,
    c.event_date AS date
FROM
    (
        SELECT 
            IF(fighter_b = $fighter_id, fighter_b, fighter_a) AS f_a,
            IF(fighter_b = $fighter_id, fighter_a, fighter_b) AS f_b,
            winner,
            method,
            event
        FROM 
            fights
        WHERE
            $fighter_id IN (fighter_a, fighter_b)
    ) a
INNER JOIN
    fighters b ON a.f_b = b.fighter_id
INNER JOIN
    events c ON a.event = c.event_id
ORDER BY
    c.event_date DESC

साथ ही, यदि विजेता फ़ील्ड शून्य है, तो बस विधि फ़ील्ड को प्रतिध्वनित करें। इस तरह, जब आप किसी अन्य प्रकार की विधि को जोड़ना चाहते हैं जहां विजेता आपके सिस्टम के लिए शून्य है, तो आपको अपने CASE में और अधिक सशर्त जांचों पर ध्यान देने की आवश्यकता नहीं है। बयान।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं mysql रिकॉर्ड में ब्रेक लाइन कैसे शामिल कर सकता हूं?

  2. एक निश्चित सूची द्वारा MySQL में आइटम ऑर्डर करें?

  3. समाचार फ़ीड में मेरे या मेरे दोस्तों द्वारा बनाई गई पोस्ट का चयन कैसे करें?

  4. MySQL:IF संग्रहित प्रक्रिया में

  5. मैं PHP और MySQL का उपयोग करके डेटाबेस मानों को कैसे बदलूं?