SQLite join пустая таблица

326
17 мая 2017, 06:56

Имеются таблицы:

  • mods (INTEGER id, TEXT name, INTEGER version, INTEGER release, INTEGER modification)
  • relations (INTEGER mod_owner, INTEGER mod_attached)

Всё это реализует связь 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, как всегда глупость..

Answer 1
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

READ ALSO
MySQL запрос из четырех таблиц

MySQL запрос из четырех таблиц

Ребят помогите решить задачку, никак не складываеться в голове1) Напишите запрос, который выводит имена всех учеников, сдавших экзамен по математике...

447
Mysql IF и IFNULL функции и индекс

Mysql IF и IFNULL функции и индекс

Таблица большая, так вот вопрос: если добавить индекс на поля action и category_id, скорость выборки увеличится ?

283
Адрес по координатам

Адрес по координатам

Всем приветНужен совет

355
Конфигурация logback + spring boot без .xml

Конфигурация logback + spring boot без .xml

Можно ли прикрутить и если можно, то как, logback к spring boot без использованияxml ?

353