2012-02-08 5 views
0

У меня есть следующие:MySQL Query: Получите 3 результаты, где идентификатор равен это, то другой 3, где идентификатор равен, что

стол: темы
COLS: TopicID, CategoryId (привязка к CategoryId в категориях)

тАБЛИЦА: категории
COLS: CategoryId

ради этой дискуссии, давайте делать вид, тема таблица имеет 100 строк с topicIds 100 через 200, и каждая строка связана с различными categoryIds 1 - 10. Пусть каждый CategoryId находится там 10 t imes случайным образом; не в порядке. Категории затем имеет 10 строк с categoryIds: 1 через 10

Я хочу написать запрос, который читается как (я знаю, что это не так):

SELECT topicId FROM topics WHERE categoryId = 1 OR categoryId = 2 OR categoryID = 3 LIMIT 3 topicIds per categoryId 

Результат должен быть, что я тяну 9 строки из базы данных. 3 из строк связаны с категорией 1, 3 с catId 2, 3 с catId 4.

Как это сделать? Я в тупике.

ответ

3
(SELECT topicId 
    FROM topics 
    WHERE categoryId = 1 
    LIMIT 3) 
UNION ALL 
(SELECT topicId 
    FROM topics 
    WHERE categoryId = 2 
    LIMIT 3) 
UNION ALL 
(SELECT topicId 
    FROM topics 
    WHERE categoryId = 3 
    LIMIT 3) 
Смежные вопросы