2013-02-22 4 views
-2

Ищете способ сортировки заказов по трем условиям. Я могу получить двух из них с проблемой. Пример таблицы:сортировать таблицу по трем столбцам

Buyer Qty Item_ID 
James 1 12345 
Jack 1 34564 
John 3 13445 
Kevin 1 83243 
Bill 2 23434 
Jack 3 23423 

поэтому трюк здесь покупателям группы первого,
тогда кол-во затем item_id

Джек имеет два заказов, которые должны быть сгруппированы затем тянули и поставляется вместе Остальная часть заказы должны быть сгруппированы по Qty затем отсортированный по iTEM_ID

выходной сигнал будет, как:

Buyer Qty Item_ID 
Jack 1 34564 
Jack 3 23423 
James 1 12345 
Kevin 1 83243 
Bill 2 23434 
Bob 2 23444 
John 3 13445 

Покупатели не обязательно сортируются, только что сгруппированные для нескольких заказов. сортировать по qty, item_id разделить заказы валетов. мы получаем 100 заказов в день, несколько от одного и того же покупателя. Заказы с одинаковым количеством элементов необходимо сортировать по item_id, чтобы упростить вытягивание запасов с одного конца комнаты на другое. Кажется, что группировка покупателей будет работать, но пока не поняла.

самый разумный запрос до сих пор:

select * FROM orders 
    WHERE printed = 0 
    AND status = 'completed' 
    AND address_name <> '' 
    group by buyer 
    ORDER BY qty, id; 

этот запрос пропускает несколько заказов от того же покупателя и дает остальное сортируется правильно.

Я реализовал ответ 1 с успехом спасибо!

+2

У вас есть запрос, где вы пытались это сделать? –

+0

Я ошибаюсь, думая, что вам просто нужен «заказ от покупателя, qty, item_ID», а не «группа»? Увидеть ожидаемый результат тоже было бы полезно – xQbert

+0

Надеюсь, вы получили ответ на свой первый вопрос. Итак, вы бы приняли ответ за него. Если у вас есть другой вопрос, было бы лучше создать новый, не разрабатывая существующий решенный. Вы не только получаете этот вопрос и ответ. Поэтому сохраните этот формат, чтобы другие могли использовать поток. Кстати, ошибка самоочевидна. У вас нет столбца item_number в таблице paypal_ipn_orders. (Подтвердите, что это может быть item_id) – chandimak

ответ

1

Следующий запрос даст вам точный результат. Во внутреннем запросе он генерирует количество экземпляров одного и того же покупателя. Затем он соединяется с исходной таблицей из столбца покупателя. Затем отсортируйте его по количеству совпадений экземпляров покупателя и по другим столбцам по возрастанию.

SELECT table1.buyer, qty, item_id 
FROM orders table1, 
    (SELECT buyer, COUNT(*) as count FROM orders GROUP BY buyer) as table2 
    WHERE table1.buyer = table2.buyer 
    ORDER BY count DESC, qty, item_id; 

См. Это fiddle.

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