2014-01-11 3 views
0

У меня есть таблица, как это (создается из соединения различных таблиц)Group по идентификатору, но порядок по имени

+------------+--------------+-------------+ 
| product_id | product_name | category_id | 
+------------+--------------+-------------+ 
|  1  | orange |  3  | 
|  1  | orange |  4  | 
|  2  | banana |  2  | 
|  3  | apple  |  2  | 
|  3  | apple  |  3  | 
|  3  | apple  |  4  | 
+------------+--------------+-------------+ 

Я хотел бы его сгруппирован по ID, но отсортирован по имени.

Как это

+------------+--------------+-------------+ 
| product_id | product_name | category_id | 
+------------+--------------+-------------+ 
|  3  | apple  |  2  | 
|  3  | apple  |  3  | 
|  3  | apple  |  4  | 
|  2  | banana |  2  | 
|  1  | orange |  3  | 
|  1  | orange |  4  | 
+------------+--------------+-------------+ 

Возможно ли это? Я попытался использовать GROUP BY, но тогда он сохраняет только одну строку на каждый продукт, поэтому я не вижу всех категорий продукта.

редактировать: Мой запрос до сих пор

SELECT products.id as product_id, products.name as product_name, categories.id as category_id 
FROM produkte 
    LEFT JOIN prod_cat ON products.id = prod_cat.product_id 
    JOIN categories ON prod_cat.category_id = categories.id 
ORDER BY products.id 

С "prod_cat" быть таблицы, присваивает категории для продуктов.

ответ

1

Это будет заказывать их по имени then id категории, давая результаты, как вы их показали.

SELECT products.id as product_id, products.name as product_name, categories.id as category_id 
FROM produkte 
    LEFT JOIN prod_cat ON products.id = prod_cat.product_id 
    JOIN categories ON prod_cat.category_id = categories.id 
ORDER BY product_name ASC, category_id ASC 

Я думаю, вы поняли GROUP BY, но если вы хотите, чтобы сгруппировать их (уменьшить записи к одному, где поле дано в GROUP BY пункт соответствует), вы можете отображать категории в виде списка с помощью GROUP_CONCAT(categories.id) с GROUP BY product_id

1
Select * from products order by product_id desc, product_name asc; 
Смежные вопросы