Probably doing another join against the requests and employees.
Something like this:-
SELECT T.*, ER2.SEN, ER2.BIR, requestcnt
FROM tours T
LEFT OUTER JOIN
(
SELECT R.tourid, count(R.requestid) AS requestcnt, MIN(E.SEN) AS SEN
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
WHERE Funktion = 'XY'
GROUP by R.tourid
) ER
ON ER.tourid = U.tourid
LEFT OUTER JOIN
(
SELECT R.tourid, E.SEN, MIN(E.BIR) AS BIR
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
WHERE Funktion = 'XY'
GROUP by R.tourid, E.SEN
) ER2
ON ER2.tourid = U.tourid
AND ER.SEN = ER2.SEN
EDIT - For the revised request
Getting the 3 of anything is awkward as you can't really use MIN / MAX functions to get it (with a lot of effort you possibly could by using them to find and exclude the min, then again with the results of that, etc). You can't really use limit easily with joined sub queries as it will work on the overall results of the query, not per group.
2 ways I can think of off the top of my head. Firstly adding a sequence number to a sub query which gets the results in seniority order, which resets the tourid changed.
Something like this (not tested):-
SELECT T.*, ER2.SEN, ER2.BIR, requestcnt
FROM tours T
LEFT OUTER JOIN
(
SELECT R.tourid, count(R.requestid) AS requestcnt
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
WHERE Funktion = 'XY'
GROUP by R.tourid
) ER
ON ER.tourid = T.tourid
LEFT OUTER JOIN
(
SELECT R.tourid, E.employeeid, E.SEN, E.BIR, @seq:=IF(R.tourid=@tourid, @seq+1, 1) AS seq
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
CROSS JOIN (SELECT @seq:=0, @tourid:=0)
WHERE Funktion = 'XY'
ORDER BY R.tourid, E.SEN, E.BIR, E.employeeid
) ER2
ON ER2.tourid = T.tourid
AND ER2.seq = 3
Another way would be using correlated sub queries on the SELECT. This will probably slow down dramatically as the number of rows returned increases:-
SELECT T.*,
(
SELECT E.SEN
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
WHERE Funktion = 'XY'
AND R.tourid = T.tourid
ORDER BY E.SEN, E.BIR
LIMIT 3,1
),
(
SELECT E.BIR
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
WHERE Funktion = 'XY'
AND R.tourid = T.tourid
ORDER BY E.SEN, E.BIR
LIMIT 3,1
),
requestcnt
FROM tours T
LEFT OUTER JOIN
(
SELECT R.tourid, count(R.requestid) AS requestcnt
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
WHERE Funktion = 'XY'
GROUP by R.tourid
) ER
ON ER.tourid = T.tourid
Or possibly in the WHERE clause (again not tested)
SELECT T.*, EM.SEN, EM.BIR, EM.employeeid,
requestcnt
FROM tours T
CROSS JOIN employees EM
LEFT OUTER JOIN
(
SELECT R.tourid, count(R.requestid) AS requestcnt
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
WHERE Funktion = 'XY'
GROUP by R.tourid
) ER
ON ER.tourid = T.tourid
WHERE EM.employeeid =
(
SELECT E.employeeid
FROM requests R
INNER JOIN employees E ON E.employeeid = R.employeeid
WHERE Funktion = 'XY'
AND R.tourid = T.tourid
ORDER BY E.SEN, E.BIR
LIMIT 3,1
)