sql >> Database >  >> RDS >> Mysql

MySQL-query INNER JOIN met aliassen

In dit geval kun je het als volgt doen;) Gewoon een simpele draaitabel.

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-DEMO HIER

Als je een dynamische info_key . hebt , heb je een dynamische sql nodig om dit te doen, hier geef ik je een voorbeeld.

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 DEMO HIER



  1. Verbinding maken met de lokale SQL Server-database met behulp van C#

  2. Opencart 1.5.1.3 toont speciale prijs met start- en einddatum op productweergavepagina

  3. Hotelkamerprijzen voor verschillende seizoenen

  4. Hoe kan ik een automatische e-mail verzenden vanuit MySQL-records?