• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как Составить Запрос К Трём Таблицам (многие Ко Многим)

  • Автор темы NeznaJka
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

NeznaJka

(классика) Есть 3 таблицы:
authors - список авторов книг
books - список книг
books_authors - таблица связи авторов с книгами
---- Таблица authors ------
Код:
CREATE TABLE IF NOT EXISTS `authors` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`fio` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4;

INSERT INTO `authors` (`id`, `fio`) VALUES
(1, 'Николай Николаевич Носов'),
(2, 'Артур Конан Дойль'),
(3, 'Александр Сергеевич Пушкин');
---- Таблица books ------
Код:
CREATE TABLE IF NOT EXISTS `books` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8;

INSERT INTO `books` (`id`, `name`) VALUES
(1, 'Незнайка учится'),
(2, 'Незнайка-путешественник'),
(3, 'Винтик, Шпунтик и пылесос'),
(4, 'Затерянный мир'),
(5, 'Шерлок Холмс'),
(6, 'Руслан и Людмила'),
(7, 'Сказка о рыбаке и рыбке');
---- Таблица связей books_authors ------
Код:
CREATE TABLE IF NOT EXISTS `books_authors` (
`id_book` int(11) NOT NULL,
`id_author` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `books_authors` (`id_book`, `id_author`) VALUES
(1, 1),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(7, 3),
(6, 3);
Подскажите пожалуйста, как составить запрос, чтобы для каждого автора выводился список его книг через запятую. Знаю, что нужно использовать JOIN, GROUP BY + GROUP_CONCAT, но не знаю как именно. Ни как не соображу. Я новичёк :blink:
Спасибо

Меня хватило только на:
Код:
SELECT authors.id, authors.fio, books_authors.id_book AS books, GROUP_CONCAT('books')
FROM
authors
INNER JOIN 
books_authors
ON authors.id = books_authors.id_author
GROUP BY fio
... но выводит только book,book,book
Подскажите, люди добрые

Добавлено: Модераторам
Удалите повторяющиеся топики, я извиняюсь. При создании вылезла ошибка в вашем скрипте и я нажал кнопку обновить (сори)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!