sql >> Databasteknik >  >> RDS >> Mysql

Blandar MYSQL - GROUP_CONCAT OCH FIND_IN_SET värden/ordning?

skulle något sånt här fungera? i princip säger du ordning efter fältvärdena och får dem att se ut som '52', '46',... etc.

SELECT 
    GROUP_CONCAT(DISTINCT options.option_name 
                 ORDER BY FIELD( options.id, 
                                 concat('"', 
                                        replace(selected, ',', '","'),
                                        '"') 
                               ) 
                 SEPARATOR ','
                ) AS selected,
    user_login.firstname, user_login.lastname,
    event.event_title
FROM options, user_login, event, votes, questions
WHERE event.id = ? AND questions.Event_id = event.id 
  AND votes.user_id = user_login.id AND votes.question_id = questions.id 
  AND FIND_IN_SET(options.id, selected)
GROUP BY user_login.id
ORDER BY user_login.class

EDIT:

mitt föredragna sätt att göra detta är att göra en variabel som har strängen.. den är lättare att läsa och du kan se till att den gör rätt ordning på detta sätt.

SET @order_field := (
    SELECT 
        group_concat(
            CONCAT('"', replace(selected, ',', '","'), '"')
        ) 
    FROM votes);

då skulle frågan vara mycket lättare att läsa...

SELECT 
    GROUP_CONCAT(DISTINCT options.option_name 
                 ORDER BY FIELD( options.id, @order_field) 
                 SEPARATOR ','
                ) AS selected,
    user_login.firstname, user_login.lastname,
    event.event_title
FROM options, user_login, event, votes, questions
WHERE event.id = ? AND questions.Event_id = event.id 
  AND votes.user_id = user_login.id AND votes.question_id = questions.id 
  AND FIND_IN_SET(options.id, selected)
GROUP BY user_login.id
ORDER BY user_login.class



  1. AUTO_INCREMENT och LAST_INSERT_ID

  2. Bästa sättet att lära sig PostgreSQL-lagrade procedurer?

  3. mySQL välj postnummer inom x km/mile inom räckvidd av y

  4. skulle postgres verkligen uppdatera sidfilen när alla fält är lika före och efter uppdatering?