Jest to możliwe dzięki tej małej sztuczce (OUTER JOIN w tabeli wiele do wielu, z ograniczeniem, że GroupID musi wynosić 3 (dla dramatu)
http://sqlfiddle.com/#!9/01cf3/1
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
oznacza :weź wszystkie wiersze z poprzedzających tabel (te, które znajdują się po LEWEJ stronie LEFT OUTER JOIN
, jeśli chcesz), nawet jeśli w poniższych tabelach nie ma odpowiadających im wierszy. Warunek ON elements.ID = group_elements.ElementID AND group_elements.GroupID = 3
mówi, że jeśli znajdziemy coś, co pasuje do naszego ElementID, musi to być również dramat (GroupID =3). Następnie wykonujemy kolejne LEFT OUTER JOIN w tabeli groups, co pozwala nam wyświetlić kolumnę Gatunek lub NULL, jeśli element nie był dramatem.