Сложный групповой оператор MySQL - PullRequest
1 голос
/ 10 августа 2011

У меня есть таблица со следующими столбцами:

boxid - nouns - username

1 - w1,w2,w3 - user1
1 - w3,w2,w4 - user2
1 - w1,w8,w5 - user1
2 - w7,w2,w5 - user2

, и в настоящее время у меня есть запрос, который позволяет мне извлечь следующее:

SELECT boxid, group_concat(concat(username,":",nouns) SEPARATOR "|") as listn  
FROM table group by boxid;

этот запрос дает мневернемся к следующему:

box1 - user1:w1,w2,w3|user2:w3,w2,w4|user1:w1,w8,w5

Однако я хотел бы получить все существительные одного и того же пользователя без повторения пользователей (но повторяя слова каждого пользователя), что-то вроде следующего результата:

box1 - user1:w1,w2,w3,w1,w8,w5|user2:w3,w2,w4

Может кто-нибудь показать мне, если это можно сделать с помощью MySQL и как?Я понятия не имею об этом ...

(я могу сделать это с помощью php, но я думаю, что получить прямой результат в sql будет быстрее ...)

Заранее спасибо ...

1 Ответ

3 голосов
/ 10 августа 2011

Попробуйте это:

SELECT boxid, group_concat(concat(username,":",nouns_list) SEPARATOR "|") as listn  
  FROM 
    (
    SELECT boxid, username, group_concat(nouns)  as nouns_list
        FROM table 
    GROUP BY boxid, username
) a
GROUP BY boxid
...