2013-02-17 7 views
0

У меня есть orders таблицу со следующими столбцами:Группировка SQL-запрос по идентификатору пользователя

-userid 
-orderid (primary key) 
-date 
-name 
-qty 

Так что я хотел бы, чтобы отобразить в виде таблиц в сводной странице все заказы и сгруппировать их по каждому идентификатору пользователя. Так было бы, как

Userid: 0001 
| Orderid | Name | QTY | 
| 1001 | Item A | 10 | 
| 1002 | Item B | 5 | 

Userid: 0003 
| Orderid | Name | QTY | 
| 1003 | Item C | 6 | 
| 1004 | Item C | 7 | 

До сих пор я экспериментировал и получил:

  1. дисплей в одной таблице все элементы отсортированы по идентификатору пользователя
  2. с GROUP BY идентификатору пользователя, я удалось создать столько таблиц, сколько есть разных идентификаторов пользователя

Но я не могу совместить эти два с желаемыми результатами и очень ценю некоторые советы о том, что я делаю неправильно.

Спасибо заранее, и я надеюсь, что мои объяснения имеют смысл!

+1

'п GROUP BY' не нужно здесь , Вы будете выполнять только «SELECT UserID, Orderid, Name, QTY FROM orders», и результат запроса будет отформатирован на уровне приложения. –

+0

Но это дает мне список заказов для всех пользователей. Я хотел бы сгруппировать каждую строку под идентификатором пользователя и отобразить их в таблицах. Например, вместо 4 рядов: '0001 - 1001 - Пункт А - 10' ' 0001 - 1002 - Позиция B - 5' '0003 - 1003 - Пункт C - 6' ' 0003 - 1004 - Пункт C - Я хотел бы сгруппировать их под 2 таблицами, например, userid 0001 имеет 2 элемента, userid 0003 имеет 2 элемента и т. Д. – Cuppy

ответ

1

Я думаю, что вам нужно будет сделать это в PHP

запрос с

select * from orders order by userid, orderid 

В PHP что-то вроде этого psudo кода

$this_user_id=0; 

for (each order line) 
{ 
get fields from db result; 
if ($this_user_id!=$userid) 
{ 
$this_user_id=$orderid// save change of userid flag 
print user heading; 
} 

print order lines; 
} 
+0

оправдание форматирования кода! – KevInSol

+0

спасибо! Я действительно не понимаю, как это работает, но я экспериментирую с тем, что вы мне дали :) – Cuppy

+0

Каждая строка набора результатов mysql будет содержать идентификатор пользователя, orderid, item & qty. поэтому просто пропустите это как обычно в цикле for, но только для печати orderid, item & qty для каждой строки результата. Но прежде чем вы это сделаете, посмотрите, нашли ли вы новый идентификатор пользователя и так печатаете заголовок пользователя, $ this_user_id отметит изменение в userid, и именно поэтому он установлен на ноль перед циклом – KevInSol

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