2012-03-30 76 views
1

如果我有一排功能类别的表,它是默认为0,然后1/2/3/4/5/6为特色六类他们应该顺序每个ID四行被显示。MySQL的 - 在一个查询中选择

我可以使用六个特色中的每一个的类别ID从视频表中选择4个视频与相应的categoryId在一个查询中,然后用foreach的结果分开结果吗?

然后回到他们做的foreach结果作为类别,然后将的foreach类别为videoList

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

返回是这样的:

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

我知道它需要连接等,但我会做这样太复杂?我归咎于睡眠不足的我的头脑一片空白,因为我会通常是一个回答这样的问题..

它更复杂,因为我想从一个模型通过所有这些数据控制器在一次去作为$结果?

回答

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 2012-03-30 03:04:37

+0

是的,这是正确的,目前我可以从每个得到1但不是每个4个? – Dan 2012-03-30 03:41:55