Mysql
 sql >> Database >  >> RDS >> Mysql

Come ottenere i valori contati con un separatore di virgole come valore di riga singola

La funzione che stai cercando è GROUP_CONCAT . Vedi la documentazione:

http://dev.mysql .com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

Nel tuo esempio puoi semplicemente creare un'altra sottoquery (esempio sotto). Oppure JOIN in modo standard alla query originale.

...
(
      SELECT GROUP_CONCAT(gtp.id)
          FROM game_table_players gtp
          LEFT JOIN game_rounds gr ON gr.id = gtp.game_round_id
      WHERE gt.id = gtp.game_table_id
          AND gtp.quit<>1 AND gr.finish=0
) AS players,
...

Nota il commento su NULL gestione in GROUP_CONCAT . Se vuoi mostrare gli zeri quando non ci sono giocatori presenti, potresti voler usare COALESCE(GROUP_CONCAT(gtp.id), 0) invece.