Blade, по каким полям связаны таблицы, на скрине я понял как связаны только две таблицы
да я тоже это заметил, что ERD криво нарисована.
refs связывает reports и lectors (reports.id <-> refs.report_id, lectors.id <-> refs.lector_id). там связи многие ко многим.
confs и reports связаны по ключу confs.id <-> report.conf_id
Blade, хз, как то так
select GROUP_CONCAT(DISTINCT `lectors`.`name` SEPARATOR ",") as `group_lectors` from `lectors` join `refs` join `reports` join `confs` on `confs`.`year` = 2015 and `confs`.`id` = `reports`.`conf_id` and `reports`.`id` = `refs`.`report_id` and `refs`.`lector_id` = `lectors`.`id`
Экспорт таблиц из базы данных "elefant" (+/-)
--
-- Структура таблицы `confs`
--
CREATE TABLE IF NOT EXISTS `confs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`year` int(11) NOT NULL,
`archive` tinyint(4) NOT NULL,
`title` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Дамп данных таблицы `confs`
--
INSERT INTO `confs` (`id`, `year`, `archive`, `title`) VALUES
(1, 2015, 1, 'test');
-- --------------------------------------------------------
--
-- Структура таблицы `lectors`
--
CREATE TABLE IF NOT EXISTS `lectors` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
--
-- Дамп данных таблицы `lectors`
--
INSERT INTO `lectors` (`id`, `name`) VALUES
(1, 'Vasya'),
(2, 'Petya'),
(3, 'Kolya');
-- --------------------------------------------------------
--
-- Структура таблицы `refs`
--
CREATE TABLE IF NOT EXISTS `refs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lector_id` int(11) NOT NULL,
`report_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- Дамп данных таблицы `refs`
--
INSERT INTO `refs` (`id`, `lector_id`, `report_id`) VALUES
(1, 1, 1),
(2, 2, 1);
-- --------------------------------------------------------
--
-- Структура таблицы `reports`
--
CREATE TABLE IF NOT EXISTS `reports` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`conf_id` int(11) NOT NULL,
`filename` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
--
-- Дамп данных таблицы `reports`
--
INSERT INTO `reports` (`id`, `title`, `conf_id`, `filename`) VALUES
(1, 'test report', 1, '1');
Koenig, Спасибо большое, но это работает не совсем так, как мне нужно
Нужно сделать выборку reports из заданной confs + для каждого reports через CONCAT собрать всех lectors...
Blade, ну по аналогии, основной аргумент который передаётся это номер репорта?
Нет, год конфы.
Сейчас у меня пока используется вот такой запрос.
SELECT * FROM reports WHERE conf_id = (SELECT id FROM confs WHERE `year` = {$year})
Надо к нему как-то прикрутить новое поле.
Blade, ну мой запрос добавь к селекту, *, (запрос) as field
Koenig, Хорошо, попробую. Спасибо большое за помощь
Как правильно передать в базу перенос строки? циклом получаю несколько наборов данных и передаю их в одном сообщении. когда начинается новый набор теряется перенос