У меня эти три таблицы со своими отношениями.Комбинация запросов MySQL из CONCAT, GROUP_CONCAT и DISTINCT
people
people_id (int)
people_name (varchar)
comic
comic_id (int)
comic_name (varchar)
ref_author
comic_id (int)
people_writer_id (int)
people_illust_id (int)
Отношения по ref_author следующие.
- comic_id относится к comic_id комикса
- Оба people_writer_id и people_illust_id относится к people_id людей, так как любые конкретные люди на people_id может быть писателем, иллюстратор, или обоих.
- Когда есть, например, из двух писателей и один иллюстратора, я бы вставить таблицу с первым писателем и иллюстратором, затем вторым автором и первым иллюстратором (заполняющего разрыв с дубликатом)
Используя этот запрос,
SELECT distinct SQL_CALC_FOUND_ROWS
c.comic_name, concat (group_CONCAT(distinct pa.people_name separator '/'), ', ', group_CONCAT(distinct pb.people_name separator '/')) as 'author'
FROM ref_author ra
inner join comic c on c.comic_id = ra.comic_id
inner join people pa on pa.people_id = ra.people_writer_id
inner join people pb on pb.people_id = ra.people_illust_id
group by c.comic_name
Я мог бы показать этот вид результата.
comic_name author
17+ Kharisma Jati, Kharisma Jati
1SR6 Muhammad Fathanatul Haq, Muhammad Fathanatul Haq
304th Study Room Felicia Huang, Felicia Huang
4HERO Arief Prasojo, Arief Prasojo
5 cm Donny Dhirgantoro, Is Yuniarto
....
Degalings Pandji Pragiwaksono, Pandji Pragiwaksono/Shani ...
Проблема с этим запросом, колонка автора будет отображаться красиво, когда один человек только называют одну позицию, но когда один человек называют две позиции, она будет отображаться как дубликаты. Моя цель - отображать данные без дубликатов, таких как это.
comic_name author
17+ Kharisma Jati
1SR6 Muhammad Fathanatul Haq
304th Study Room Felicia Huang
4HERO Arief Prasojo
5 cm Donny Dhirgantoro, Is Yuniarto
....
Degalings Pandji Pragiwaksono, Shani ...
Как это сделать? Где я могу изменить запрос или есть ли недостаток в таблице?
UPDATE: Мне удалось выполнить этот подвиг, используя запрос из http://stackoverflow.com/questions/9485901/mysql-concat-ws-without-duplicates, но он отображает только два имени максимум. –