2016-08-29 12 views
2

こんにちは私の内側の結合を制限する方法はありますか?どのようにINNER JOINを制限できますか?

だから、最後の5つのmatch_idsだけを出力するように出力を制限できますか?

SELECT t.id 
    , ff.match_id 
    , ff.time 
    FROM football_teams t 
    JOIN 
    (SELECT match_id 
      , hometeam_id 
      , time 
     FROM football_fixtures 
     ORDER 
      BY time DESC 
     LIMIT 5 
    ) ff 
    ON ff.hometeam_id = t.id 
WHERE t.id IN (".$team_id_string.") 
ORDER 
    BY t.id 

iはアレイに

この

アレイのようなもの([football_team.id] =配列を返すように時計([1]、match_id match_id [2]、[3]、match_id match_id [4]、コメントすることにより、[5]、))

マット

+1

どのようにクエリが機能しませんか? –

+1

説明した内容が正しいと思われます。 – sagi

+1

何も返しませんが、制限を外して返すとすべてが返されます –

答えて

1

をmatch_id、私はそれゆえ、football_fixturesテーブルで5つの最新のレコードがクエリ内の他の基準に一致しないと仮定 - 戻りません。何でも私は5つのレコードが選択されていることを確認するために、外側のクエリに制限を置くことをお勧めしたい:

SELECT s.* FROM 
    (SELECT 
      football_teams.id, 
      ff.match_id, 
      ff.time 
      FROM football_teams 
    INNER JOIN football_fixtures ff 
    ON hometeam_id=football_teams.id 
    WHERE football_teams.id IN (".$team_id_string.") 
    ORDER BY ff.time 
    LIMIT 5) s 
ORDER BY s.id 
+0

これは何を達成しようとしているのでしょうか。私は最大20のチームIDを持つことができますが、これは5に制限され、チームIDごとに1つのmatch_idが返されます:s –

+1

次に達成しようとしていることを説明しよう – sagi

+0

MySqlが知っている唯一の配列はJSON配列。したがって、計画は1)row_number()をエミュレートします。サブクエリで2)ピボット5行を行番号3で列としてピボットします。JSON_ARRAY(col1、.. col5) – Serg

0

は、私はあなたのクエリのこのフォームを示唆しています。この特定のクエリで使用するのは意味がないため、結合を削除しました。

SELECT t.match_id, t.hometeam_id as id, t.time FROM ( 
    SELECT match_id, hometeam_id, time 
    FROM football_fixtures 
    WHERE hometeam_id IN (".$team_id_string.") 
    ORDER BY time DESC 
    LIMIT 5 
) as t 
ORDER BY id 
関連する問題