如果我有一个类别表,其特征行的默认值为0,那么1/2/3/4/5/6将按照它们应显示的顺序显示六个类别。
我可以使用六个特色中每一个的类别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;
我知道它需要加入等但是我这样做太复杂了吗?我把我的空白归咎于睡眠不足,因为我通常会回答这样的问题。
它更复杂,因为我试图将所有这些数据从模型传递到控制器一次性作为$ result?
答案 0 :(得分:2)
您的基本方法可行,但您的SQL存在一些问题:
ORDERBY
告诉SQL您希望记录的顺序。如果我理解正确,则类别排名位于category
表中。如果是这种情况,则需要ORDERBY
和子查询中的限制,例如: SELECT id FROM category WHERE featured > 0 ORDERBY featured LIMIT 4
。WHERE category = (SELECT...
语法错误。将=
替换为IN
。答案 1 :(得分:1)
你试图从6个类别中的每一个中获取4行,对吧?总共24行?
this question的第一个答案可能适用于您的情况。