Группа MySQL _Объединение повторяющихся значений

Я работаю над проектом с открытым исходным кодом под названием PHP -Bouncer .и у меня проблемы с запросом MySQL, который я пишу для него. По сути, у нас есть три таблицы :BouncerRoles, PageInRole и BouncerPageOverrides. BouncerRoles содержит уровни доступа, а две другие таблицы ссылаются на BouncerRoles через внешний ключ и предоставляют несколько записей дополнительных данных. Я написал следующий запрос, чтобы попытаться получить все данные ролей, которые мне нужны, сразу:

select BouncerRoles.RoleID, BouncerRoles.RoleName, 
GROUP_CONCAT(PageInRole.PageName separator '|') as ProvidedPages, 
GROUP_CONCAT(CONCAT(BouncerPageOverrides.OverriddenPage,'&',BouncerPageOverrides.OverridingPage) separator '|') as OverriddenPages 
from BouncerRoles join PageInRole on BouncerRoles.RoleID = PageInRole.RoleID 
join BouncerPageOverrides on BouncerRoles.RoleID = BouncerPageOverrides.RoleID
group by BouncerRoles.RoleID;

Целью этого запроса является предоставление RoleID, RoleName, списка предоставленных страниц с разделителями вертикальной черты и списка переопределений (с разделителями вертикальной черты в форме overriddenpage&overridingpage ). Все работает, кроме последнего столбца запроса, который повторяет найденные записи снова и снова, как этот (вывод в формате CSV):

RoleID,RoleName,ProvidedPages,OverriddenPages
2,Exchange,exchange-how.php|exchange-support.php|exchange.php|premium-promo.php|exchange-resorts.php|premiumplus-promo.php|exchange-deposit.php|exchange-requestdestination.php,whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php|whyexchange.php&exhange.php
3,Premium,premiumplus-promo.php|premium-cruises.php|premium-resorts.php|premium-condohome.php|premium-hotelaircar.php|premium.php|premium-restaurants.php|premium-overview.php,premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php|premium-promo.php&premium.php
4,"Premium Plus",premiumplus-exclusiveescapes.php|premiumplus.php|premiumplus-overview.php|premiumplus-concierge.php|premiumplus-airportlounge.php,premiumplus-promo.php&premiumplus.php|premiumplus-promo.php&premiumplus.php|premiumplus-promo.php&premiumplus.php|premiumplus-promo.php&premiumplus.php|premiumplus-promo.php&premiumplus.php

Есть ли что-то, что я сделал неправильно в своем запросе, чтобы вызвать это?

10
задан Brendon Dugan 14 July 2012 в 18:25
поделиться