2010-05-03 48 views
1

最近我已發佈this question,現在我想要相同的查詢,但有一個關係。如何爲每個外鍵選擇有限的行數? (以及如何指定關係)

現在我有「飼料」表和「feed_entries」表。我想每個類別的行數有限。 上述化妝用一個表與CATEGORY_ID現場查詢:

SELECT x.* FROM (SELECT t.*, 
CASE WHEN @cat != t.category_id THEN @rownum := 1 ELSE @rownum := @rownum + 1 END AS rank, 
@cat := t.category_id 
FROM feed_entries t 
JOIN (SELECT @rownum := NULL, @cat := 0) r 
ORDER BY t.category_id DESC) x 
WHERE x.rank <= 3 AND x.deleted =0 ORDER BY x.category_id, x.date DESC LIMIT 50 

代替t.category_id我需要從「源」一表中使用f.category_id。 如何在此查詢中指定關係?

+0

你可以宣佈從另一個表中的另一個變量在FROM子句。 – Mike 2010-05-03 22:03:25

+0

是的,但我沒有成功的關係,你能告訴我怎麼樣? – 2010-05-04 18:35:21

回答

0

明白了。實際上這個sql是我測試過的第一個,但是因爲我在CASE clausule之前忘記了逗號,所以發生了錯誤。

正確的是:

SELECT x . * 
FROM (
SELECT t . * , f.categoria_id AS idCategoria, 
CASE WHEN @cat != f.categoria_id 
THEN @rownum :=1 
ELSE @rownum := @rownum +1 
END AS rank, @cat := f.categoria_id AS catteste 
FROM feed_entries t, feeds f 
JOIN (
SELECT @rownum := NULL , @cat :=0 
)r 
WHERE t.feed_id = f.id 
ORDER BY f.categoria_id DESC 
)x 
WHERE x.rank <=3 
AND x.deleted =0 
ORDER BY x.categoria_id, x.date DESC 
LIMIT 50 
相關問題