sql >> データベース >  >> RDS >> Mysql

結合された配列の値に応じてINNERJOINテーブルの列を選択する方法

    SELECT 
       CONCAT( 
        "{"
       ,     '"id"' , ":" , '"' , friends.id , '"' , ","
       ,     '"name"' , ":" , '"' , friends.name , '"' , ","
        , 
       CASE 
       WHEN relations.status = 'Current' 
         THEN CONCAT('"CurrentTeam":["',    teams.name ,'"]')
       ELSE CONCAT('"pastTeam": '   ,   '[' ,   GROUP_CONCAT( '"',teams.name, '"'),']'  )
         END   
       , "}"
       )
      AS json
    FROM 
     friends 
    INNER JOIN 
     relations 
    ON 
     friends.id = relations.friends_id
    INNER JOIN
     teams 
    ON
    relations.teams_id = teams.id
     group by friends.id,relations.status
    

    http://sqlfiddle.com/#!9/694bc69/23



    1. Oracleエラー処理

    2. 10進数タイプのPDO::PARAM?

    3. SQL Server(T-SQL)でテーブルのパーティション情報を取得する2つの方法

    4. WHERESELECTサブクエリエラーを伴うMYSQLアップデート