Ответ 1
Это возможно с помощью этого небольшого трюка (OUTER JOIN в таблице "многие ко многим" с ограничением на то, что для параметра GroupID должно быть 3 (для драмы)
http://sqlfiddle.com/#!2/b7c18/2
SELECT elements.ID, elements.Element, groups.Genre
FROM elements
LEFT OUTER JOIN group_elements
ON elements.ID = group_elements.ElementID
AND group_elements.GroupID = 3
LEFT OUTER JOIN groups
ON group_elements.GroupID = groups.ID
LEFT OUTER JOIN
означает: возьмите все строки из предшествующих таблиц (те, которые находятся на стороне LEFT стороны LEFT OUTER JOIN
, если вы это сделаете), даже если нет соответствующих ей строк в следующих таблицах, Условие ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3
говорит, что если мы найдем что-либо, что соответствует нашему ElementID, оно также должно быть драмой (GroupID = 3). Затем мы делаем другую LEFT OUTER JOIN в таблице групп, которая позволяет нам отображать столбец Genre или NULL, если этот элемент не был драмой.