0
SELECT cat.category, cr.course, subcat.subcategory, vd.video_title, vd.video_length, vd.video_id
    FROM category As cat
    INNER JOIN subcategory as subcat 
    ON cat.parent_id=subcat.parent_id
    INNER JOIN courses As cr
    ON cr.child_id=subcat.child_id
    INNER JOIN video_details AS vd
    ON vd.course_id=cr.course_id
    WHERE cat.category='Engineering'

このクエリは、category と一致する videos_details テーブルのすべてのエントリを返しますが、要件は、where 句のカテゴリのサブカテゴリごとに video_details テーブルから最初の 5 つのエントリのみを取得することです。

構造はこんな感じです 各カテゴリには複数のサブカテゴリがあり、各サブカテゴリには複数のコースがあり、各コースには複数のビデオレコードがあります。

上記のクエリでは、サブカテゴリ列に複数の重複値が含まれるため、各重複値の 5 行のみを取得するにはどうすればよいでしょうか?

4

1 に答える 1

0

このLIMITキーワードは、クエリから最初の 5 行 (または 10 行など) だけを取得するために使用できます。そのため、要件を正しく理解していれば、最初の 5 行だけを取得するサブクエリINNER JOINonvideo_detailsをon に変更できます。INNER JOINvideo_details

Will this work for you? The change is on the third-to-last line:

SELECT cat.category, cr.course, subcat.subcategory, vd.video_title, vd.video_length, vd.video_id
  FROM category As cat
  INNER JOIN subcategory as subcat 
  ON cat.parent_id=subcat.parent_id
  INNER JOIN courses As cr
  ON cr.child_id=subcat.child_id
  INNER JOIN (SELECT course FROM video_details LIMIT 5) vd
  ON vd.course_id=cr.course_id
  WHERE cat.category='Engineering'
于 2013-03-28T15:28:25.187 に答える