Как соединить две строки в sql - PullRequest
0 голосов
/ 16 марта 2020

Это мой sql код

SELECT b.book_id, concat(`first_name`, ' ', a.`last_name`) AS 'author_name', b.title
FROM 
    `book_authors` ba JOIN `books` b ON ba.`book_id` = b.`book_id`
    JOIN `authors` a ON ba.`author_id` = a.`author_id`
WHERE
    b.`book_id` > 0 IN (SELECT c.`book_id`
                    FROM `book_authors` c
                    GROUP BY c.`book_id`)

Но, как вы можете видеть на скриншоте ниже, строки с одинаковым book_id печатаются отдельно. Как я могу «присоединиться» к ним. Так что поле автора будет разделено запятыми или что-то в этом роде:

The screenshot

Ответы [ 2 ]

0 голосов
/ 17 марта 2020

Обратите внимание, что group_concat имеет ограничение на resualt. Вы должны увеличить его, выполнив запрос group_concat_max_len.

0 голосов
/ 17 марта 2020

Вы можете использовать агрегацию и group_concat ():

select 
    b.book_id, 
    group_concat(first_name, ' ', a.last_name) author_names, 
    b.title
from book_authors ba 
inner join books   b on ba.book_id = b.book_id
inner join authors a on ba.author_id = a.author_id
where b.book_id > 0
group by b.book_id, b.title

Это дает вам одну запись на книгу со списком имен авторов, объединенным в столбце author_name с разделителем ,.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...