Вместо да четете директно таблицата с услугите, използвайте подзаявка и се присъединете към нея.
select s.*, u.`fname`, u.`lname`, aif.`airport` FROM
( select * from services order by id limit 2) as s INNER JOIN airports_in_flight aif
ON s.`id` = aif.`service_id` INNER JOIN users u
ON s.`service_provider_id` = u.`id`
В зависимост от вашата версия на mysql, не можете да имате подзаявка IN, използваща ограничение и изместване (тази версия на MySQL все още не поддържа 'LIMIT &IN/ALL/ANY/SOME subquery'), но това все пак ще работи.
РЕДАКТИРАНЕ:
Ако зададете вътрешната заявка на това:
(SELECT s.id
FROM services s
INNER JOIN airports_in_flight aif
ON s.`id` = aif.`service_id`
INNER JOIN users u
ON s.`service_provider_id` = u.`id`
LIMIT 2)
Тогава ще връща само услуги с airports_in_flight и потребители (евентуално добавяне на отделна клауза).
РЕДАКТИРАНЕ за изясняване:
В момента имате това като ваш избор:
select s.*, u.`fname`, u.`lname`, aif.`airport` FROM
services as s INNER JOIN airports_in_flight aif
ON s.`id` = aif.`service_id` INNER JOIN users u
ON s.`service_provider_id` = u.`id`
Искате да ограничите до 2 услуги (не знам дали искате всички услуги, предполагам само тези със съвпадащи потребители и летища в полет), така че трябва да поставите лимита на правилната таблица.
В този случай правилната таблица е таблицата на услугите. За да опростим нещата, нека започнем с опростена версия на това, което имате:
SELECT s.*, aif.`airport` FROM
services as s
INNER JOIN airports_in_flight aif ON s.`id` = aif.`service_id`
Ще направя предположение, че има летище в редица за всяка услуга (можем да добавим тази сложност по-късно).
За да изброим първите 2 услуги, искаме ограничението за услугите, а не цялата заявка, така че ще бъде:
SELECT s.*, u.`fname`, u.`lname`, aif.`airport` FROM
(select * from services limit 2) as s
INNER JOIN airports_in_flight aif ON s.`id` = aif.`service_id`
Забележете, че замених услугите на таблицата със заявка, която вече мога да огранича, това е подзаявката. Ако сега искаме да разглеждаме само услуги, които имат летище в полет, трябва да променим тази подзаявка от:
select * from services limit 2
до
select ss.* from services ss
inner join airports_in_flight aifs on ss.`in` = aifs.`service_id` limit 2
Преименувах таблиците с услуги и airports_in_flight ss и aifs, така че да не се сблъскват с имената в основната заявка, поставих вътрешно присъединяване, за да огранича редовете ми само до таблица за услуги, и ограничено от 2, така че поставям подзаявката в заявката, която сега получаваме:
select s.*, u.`fname`, u.`lname`, aif.`airport`
FROM
(select ss.* from services ss
inner join airports_in_flight aifs on ss.`in` = aifs.`service_id`
limit 2) as s
INNER JOIN airports_in_flight aif ON s.`id` = aif.`service_id`
След това трябва да можете да разширите подзаявката, за да добавите вътрешното присъединяване за потребители (по този начин ограничавате услугите само до тези, които имат редове airports_in_flight и редове с потребители) и да добавите таблицата с потребители към основната заявка.