2012-03-30 2 views
1

기능적 행이있는 테이블을 기본 0으로 설정 한 경우 1/2/3/4/5/6에 6 개의 카테고리를 나열해야합니다. 표시됩니다.Mysql - 하나의 쿼리에서 ID 당 4 개의 행을 선택하십시오.

비디오 테이블에서 4 개의 비디오를 선택하고 해당 categoryId를 하나의 쿼리로 선택한 다음 foreach의 결과를 분리 할 수있는 각 6 개의 카테고리 ID를 사용할 수 있습니까?

foreach($result as $categoryVideos): 
    echo $categoryVideos[categoryName]; 
    foreach($categoryVideos as $video): 
     echo $video[title]; 
    endforeach; 
endforeach; 

내가가 필요로하는 것이 무엇인지 알고 등을 조인하지만이 방법을 만드는 오전 : videoList

SELECT id, title 
FROM videos 
WHERE category = (SELECT id FROM category WHERE featured > 0) 
LIMIT 4 

이런 식으로 뭔가를 반환하는 그런 다음

을 반환 및 카테고리 다음 foreach는 카테고리로 foreach는 결과를 할 너무 복잡한? 나는 보통 이런 질문에 답을 얻었을 때 잠을 못 자고 내 빈 마음을 비난하고있다.

나는이 모든 데이터를 모델에서 컨트롤러로 전달하려고하기 때문에 더 복잡하다. 하나의 결과는 $ 결과로 나타 납니까?

답변

1

6 개 카테고리 각각에서 4 개의 행을 가져 오는 중입니다. 맞습니까? 총 24 행?

첫 번째 대답은 this question 일 수 있습니다.

2

기본적인 접근 방식은 작동하지만 당신은 당신의 SQL에 몇 가지 문제가 있습니다

  • LIMIT 4 반드시 당신이 기대하는 순서대로 레코드를 반환하지 것이다. ORDERBY을 사용하여 레코드의 순서를 SQL에 알려주십시오. 올바르게 이해하면 category 테이블에 범주 순위가 있습니다. 이 경우 하위 디렉토리에 ORDERBY 및 한도가 필요합니다 (예 : SELECT id FROM category WHERE featured > 0 ORDERBY featured LIMIT 4.
  • 하위 쿼리 WHERE category = (SELECT... 구문이 잘못되었습니다. =IN으로 바꿉니다.
+1

나는 OP가 6 개의 범주 각각에서 24 개의 행, 4 개의 행을 검색하려고하고 있다고 생각합니다. – kijin

+0

네, 맞습니다. 지금은 각자 4 명이 아니라 1 명이 있습니다. – Dan

관련 문제