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

MySQL क्वेरी इनर उपनाम के साथ जुड़ें

इस मामले के लिए, आप इसे इस तरह कर सकते हैं;) बस एक साधारण टेबल पिवट।

select
    users.id,
    users.slug,
    users.name,
    max(if(users_info.info_key = 'email', users_info.info_val, null)) as email,
    max(if(users_info.info_key = 'age', users_info.info_val, null)) as age
from users
inner join users_info
on users.id = users_info.parent
group by users.id

SQLFiddle डेमो यहां

यदि आपके पास एक गतिशील info_key है , ऐसा करने के लिए आपको एक गतिशील sql की आवश्यकता होगी, यहाँ मैं आपको एक नमूना देता हूँ।

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(if(users_info.info_key = ''',
      users_info.info_key,
      ''', users_info.info_val, null)) as ',
      users_info.info_key
    )
  ) INTO @sql
FROM users
inner join users_info
on users.id = users_info.parent
;

SET @sql = CONCAT('select users.id, users.slug, users.name, ', @sql, ' FROM users
inner join users_info group by users.id having email = \'[email protected]\'');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

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. वैंप के mysql . के साथ अजगर-mysql स्थापित करना

  2. विंडोज़ 7 पर माइस्क्ल टाइमज़ोन अपडेट नहीं किया गया

  3. MySQL सिलेक्ट आईडी जो एक कॉलम के लिए कई विशिष्ट मानों के साथ अलग-अलग पंक्तियों पर होती है

  4. MySQL डेटाटाइम डिफ क्वेरी

  5. मैं जावास्क्रिप्ट छवि स्लाइडर में MySQL डेटाबेस से छवियों को कैसे प्रदर्शित करूं?