Кажется, у вас проблемы с SQL вообще, а не с mySQL в частности. Документация по mySQL предоставляет подробную информацию о различных выражениях SQL, но обычно предполагает некоторое знакомство с SQL. Для быстрого начала работы с SQL вы можете рассмотреть этот учебник W3schools.com .
Вам нужен следующий запрос.
SELECT EmployeeName, PositionName, GroupName
FROM Employees E
LEFT JOIN EmployeePositions EP ON EP.EmployeeID = E.EmployeeID
LEFT JOIN Positions P ON P.PositionID = EP.PositionId
LEFT JOIN EmployeeGroup EG ON EG.GroupId = E.GroupId
WHERE E.EmployeeId = some_value
Несколько замечаний:
«LEFT» в «LEFT JOIN» приведет к получению NULL вместо PositionName или GroupName, когда соответствующие таблицы не имеют значения для данного FK. (Должно произойти, только если данные повреждены, скажем, если, например, некоторые сотрудники имеют GroupId 123, но каким-то образом этот groupid был удален из таблицы EmployeeGroup.
Запрос возвращает одну строку на сотрудника (1). Вы можете использовать альтернативные критерии поиска, например, WHERE EmployeeName = 'SMITH', и получить список всех сотрудников с таким именем. Действительно, без предложения WHERE вы получите список всех сотрудников, найденных в таблице «Сотрудники».
(1) это предполагает, что каждый сотрудник может иметь только одну должность. Если каким-либо образом некоторые сотрудники занимают более одной позиции (то есть несколько строк в EmployeePositions для данного EmployeeID), вы получите несколько строк на сотрудника, при этом имя и группа будут повторяться, а также будет отличаться PostionName.
Редактировать
Если у данного сотрудника может быть несколько должностей, вы можете использовать запрос, предложенный Tor Valamo, который использует конструкцию GROUP BY, с GROUP_CONCAT () для поворота всех возможных позиций в одном значении поля в возвращаемой строке.