Различные вопросы по PHP и MySQL

254K
.
(\/)____o_O____(\/)

Blade, по каким полям связаны таблицы, на скрине я понял как связаны только две таблицы

.
Blade
The Frontend-Warrior

да я тоже это заметил, что ERD криво нарисована.

refs связывает reports и lectors (reports.id <-> refs.report_id, lectors.id <-> refs.lector_id). там связи многие ко многим.
confs и reports связаны по ключу confs.id <-> report.conf_id

.
(\/)____o_O____(\/)

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');
.
The Frontend-Warrior

Koenig, Спасибо большое, но это работает не совсем так, как мне нужно
Нужно сделать выборку reports из заданной confs + для каждого reports через CONCAT собрать всех lectors...

.
(\/)____o_O____(\/)

Blade, ну по аналогии, основной аргумент который передаётся это номер репорта?

.
Blade
The Frontend-Warrior

Нет, год конфы.

Сейчас у меня пока используется вот такой запрос.

SELECT * FROM reports WHERE conf_id = (SELECT id FROM confs WHERE `year` = {$year})

Надо к нему как-то прикрутить новое поле.
.
(\/)____o_O____(\/)

Blade, ну мой запрос добавь к селекту, *, (запрос) as field

.
The Frontend-Warrior

Koenig, Хорошо, попробую. Спасибо большое за помощь

.
КИДАЛА!!! Дел не иметь!

Как правильно передать в базу перенос строки? циклом получаю несколько наборов данных и передаю их в одном сообщении. когда начинается новый набор теряется перенос

.
КИДАЛА!!! Дел не иметь!
http://johncms.com/forum/index ... 00276 разобрался
Всего: 7969