2012-03-30 75 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