У меня есть таблица действия, которая регистрирует действия, предпринятые пользователями:Получение имен людей, которые выполняют конкретные действия и персонализировать сообщение
ActionId, UserId
В Actions таблица содержит имя и другие детали о action, и Пользователи таблица аналогичным образом содержит имя и данные о пользователях.
Теперь в моем приложении, я хочу, чтобы информировать пользователя о действиях его друзей взяли, что-то вроде: «Человек А, Person B, C Человек уже принял это действие»
Чтобы сделать это, я в настоящее время с помощью GROUP_CONCAT(), чтобы Concat имен людей, как:
SELECT GROUP_CONCAT(name) FROM Users
LEFT JOIN Actions ON Users.UserId = Actions.UserId
WHERE ActionId = '123'
Однако, я хочу, чтобы персонализировать это сообщение двух способов.
Я хочу «...» и «до» последнего пользователя, поэтому он звучит более естественно, чем список, созданный машиной.
В тех случаях, когда пользователь также является одним из тех людей, которые приняли это действие, я хочу, чтобы отобразить сообщение, как:
«Person A, Person B, Person C и вы предприняли это действие. "
Какой самый элегантный способ достичь этого? Я ищу решение, которое достаточно эффективно для крупномасштабной системы.
Предполагая, что вы вытаскиваете эти данные в веб-приложение, а затем выполняйте данные, используемые в SQL, SQL никогда не будет изящным для этого, это не его сильная сторона. – iain