Имеются таблицы:
Всё это реализует связь many-to-many и запрашивается как:
SELECT
m.id as Id,
GROUP_CONCAT(distinct t.id) AS DepList
FROM
mods m
JOIN
relations mrm ON m.id = mrm.mod_owner
JOIN
mods t ON mrm.mod_attached = t.id or mrm.mod_owner = t.id
WHERE
m.name = "%s"
AND
m.modification = (SELECT max(modification) FROM mods)
GROUP BY m.id
Результат:
+----+---------+
|Id: | DepList:|
+----+---------+
|4 | 2, 4 |
+----+---------+
Но в случае, если в таблице relations нет ни одной записи, связанной с %s, возвращается пустой результат, а необходимо, чтобы возвращалось
+----+---------+
|Id: | DepList:|
+----+---------+
|%id | |
+----+---------+
Всем больное спасибо, поставил плюсы. Ошибка была в том, что я забыл указать в SELECT max(modification) WHERE name = %s, как всегда глупость..
SELECT
m.id as Id,
GROUP_CONCAT(distinct t.id) AS DepList
FROM
mods m
LEFT OUTER JOIN
relations mrm ON m.id = mrm.mod_owner
LEFT OUTER JOIN
mods t ON mrm.mod_attached = t.id or mrm.mod_owner = t.id
WHERE
m.name = "%s"
AND
m.modification = (SELECT max(modification) FROM mods)
GROUP BY m.id
Поскольку второй JOIN делается через первый - оба должны быть LEFT OUTER JOIN
Ребят помогите решить задачку, никак не складываеться в голове1) Напишите запрос, который выводит имена всех учеников, сдавших экзамен по математике...
Таблица большая, так вот вопрос: если добавить индекс на поля action и category_id, скорость выборки увеличится ?
Можно ли прикрутить и если можно, то как, logback к spring boot без использованияxml ?