サービステーブルを直接読み取る代わりに、サブクエリを使用してそれに結合します。
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のバージョンによっては、limitとoffsetを使用してサブクエリINを設定することはできません(このバージョンのMySQLは「LIMIT&IN / ALL / ANY / SOMEサブクエリ」をまだサポートしていません)が、これは引き続き機能します。
編集:
内部クエリをこれに設定した場合:
(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とusersのサービスのみが返されます(別の句を追加する可能性があります)。
明確にするために編集:
今、あなたはこれをあなたの選択として持っています:
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
servicesテーブルと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行とusers行を持つサービスのみに制限します)、usersテーブルをメインクエリに追加できるはずです。