Цель: обновить T1 с информацией GROUP_CONCAT из T3 с JOIN через T2.
Вот упрощенная версия структур таблиц:
T1: xfer_lectures Соответствующие поля: lecture_id
, topics
(Я пытаюсь заполнить поле тем составным списком тем, предназначенных для этой лекции.)
T2: calendar_lecture_topics Соответствующие поля: event_id
, topic_id
(T1.lecture_id = T2.event_id)
T3: lecture_topics Соответствующие поля: id
, title
(T2.topic_id = T3.event_id)
Я могу успешно выбрать нужную информацию с помощью следующего запроса:
SELECT
T1.`lecture_id`, GROUP_CONCAT(DISTINCT `title` SEPARATOR '; '), COUNT(*)
FROM
`xfer_lectures` T1
INNER JOIN
`calendar_lecture_topics` T2
INNER JOIN
`lecture_topics` T3
ON T1.`lecture_id` = T2.`event_id`
AND T2.`topic_id` = T3.`id`
GROUP BY T1.`lecture_id`
Однако, когда я пытаюсь ОБНОВИТЬ T1 с объединенной информацией,Я провалился.Я перепробовал несколько версий запроса на обновление, большинство из которых приводят к ошибкам.Этот выполняется как правильный запрос, но заполняет каждое поле темы тем же списком ВСЕХ тем в таблице тем:
UPDATE
`xfer_lectures` T1
JOIN `calendar_lecture_topics` T2
ON T1.`lecture_id`=T2.`event_id`
JOIN `lecture_topics` T3
ON T2.`topic_id` = T3.`id`
SET T1.`topics` = (
SELECT
GROUP_CONCAT(`title` SEPARATOR '; ')
FROM `lecture_topics`
)
Я также пробовал версии, в которых инструкция SELECT включает предложение GROUP_BY, но я все ещеВ конечном итоге с тем же списком тем для каждой записи, в отличие от двух или трех соответствующих тем на лекцию.Например:
SET T1.`topics` = (
SELECT
GROUP_CONCAT(`title` SEPARATOR '; ')
FROM `lecture_topics`
WHERE T2.`topic_id` = T3.`id`
AND T1.`lecture_id`=T2.`event_id`
GROUP BY T2.`event_id`)
Куда я иду не так?Я не очень разбираюсь в сложных запросах, поэтому мое понимание как JOIN, так и группирования, вероятно, неверно.Любая помощь будет высоко ценится!