привет StackOverflow сообщества :),MySQL присоединиться просмотра результата REPLICATE
У меня есть комплекс присоединиться запрос вызывает у меня много неприятностей:/
У меня есть 3 таблицы здесь.
1: таблица [taxonomys т]
id ownerId type
1 1 office
2 1 inventory
3 1 inventory_item
2: Таблица [tax_links л]
id parent son
1 1 2
2 1 3
3: таблица [настройки с]
id taxId title value type
1 1 name office1 taxonomy
2 1 location Address taxonomy
3 1 settings on tax_links
так 1. таблица таксономии содержит все ресурсы пользователя 2. link_taxs ссылки 2 taxonomys на друг друг 3. настройки сохранить параметры для ресурса, в случае, если я хочу настройки быть связана с отношениями (не глобальный) я установить тип в настройках для tax_links
Моего запроса должен возвращать все ресурсы пользователя и концентрировать все связанные как сыновья, так и идентификатор отношений в relsId.
SELECT `t`.`id`, group_concat(l.son) as sons, group_concat(l.id) as relsId, group_concat(s.title) as titles, group_concat(s.value) as vals, `t`.`name`, `t`.`type`, group_concat(s.id) as sid
FROM (`taxonomys` t)
LEFT JOIN `tax_links` l ON `l`.`parent` = `t`.`id`
LEFT JOIN `settings` s ON `s`.`taxId` = `t`.`id` and s.table = 'taxonomy'
WHERE `t`.`ownerId` = 1
GROUP BY `t`.`id`
он работает идеально, и вернуть все, что мне нужно КРОМЕ ТОГО это возвращение реплицируются результатов в сыновьях, relsId.
например таблицы я при условии, когда я запускаю этот запрос, я ожидать, что результат будет
id sons relsId titles vals
1 2,3 1,2 name,location office1,address
проблема, когда я запускаю мой запрос он вернуть дублированный контент для сыновей и relsId так я получаю что-то вроде
id sons relsId titles vals
1 2,3,2,3 1,2 name,location office1,address
name,location office1,address
Почему это happeing? Я знаю, что могу фильтровать array_unique, используя php после того, как я получаю строку, но что я делаю неправильно?
есть какие-либо проблемы с запуска GROUP_CONCAT агрегировать много строк? моя много для многих таблиц может вырасти до 100+ строк – Zalaboza
100 строк ничего для базы данных. 100 000 строк по-прежнему довольно малы. 'group_concat()' имеет некоторые ограничения на длину строки результата для каждой строки. –