2013-11-28 3 views
1

Я использую это (упрощенный):LIMIT на сгруппированных поле вместо всех строк

SELECT 
o.order, 
GROUP_CONCAT(oi.article) 
FROM orders o 
JOIN order_items oi 
ON o.order = oi.order 
GROUP BY o.order 
LIMIT 50 

, чтобы получить последние 50 заказов со всех позиций заказа.

Но мне нужно, чтобы элементы заказа были в их собственных строках (вертично возвращены) вместо GROUP_CONCAT по горизонтали.

Как я могу вернуть все позиции заказа из последних 50 заказов с одним элементом заказа в каждой строке?

ответ

1

Используйте подзапрос, чтобы выбрать последние 50 заказов, а затем присоединитесь к ним с помощью элементов.

select o.order, oi.article 
from (SELECT order 
     FROM orders 
     ORDER BY order_date DESC 
     LIMIT 50) o 
JOIN order_items oi 
ON o.order = oi.order 
1

Вы говорите о последних 50 наименованиях, но вы не указываете date_field для ORDER BY. С учетом этого поля даты в таблице заказов вы можете:

SELECT o.order, oi.article 
FROM (SELECT order 
     FROM orders 
     ORDER BY date_field DESC 
     LIMIT 50) o 
INNER JOIN order_items oi ON o.order = oi.order 
+0

У меня есть поле DateTime, спасибо за уведомление! – DanFromGermany

Смежные вопросы