LINUX.ORG.RU

SQL


0

0

Знатокам MySQL можно ли это сделать одним запросом?
Если нет то как это сделать правельно с минимальными затратами?

Вывести таблицу - результат запроса со следующими полями:
- firstname
- lastname
- общее кол-во тикетов
- кол-во тикетов в статусе 7
- кол-во тикетов в статусе 8
- кол-во тикетов в статусе 9 и 4

( в выводимой таблице должна меняться сортировка по полям кликом
на заголовке столбца)

исходные таблицы:
таблица work.profile
- id - id пользователя
- firstname - имя
- lastname - фамилия
таблица work.ticket
- id - id тикета
- profileid - id пользователя
- tstatusid - статус тикета

anonymous

Я не знаток MySQL, но попробую.
Что-то вроде этого (если MySQL такое поддерживает):

SELECT firstname, lastname, 
  ( SELECT count(*)
    FROM ticket
    WHERE
      ticket.profileid = profile.id
  ) as ticket_all,
  ( SELECT count(*)
    FROM ticket
    WHERE
      ticket.profileid = profile.id AND
      ticket.tstatusid = 7
  ) as ticket_7,
  ( SELECT count(*)
    FROM ticket
    WHERE
      ticket.profileid = profile.id AND
      ticket.tstatusid = 8
  ) as ticket_8,
  ( SELECT count(*)
    FROM ticket
    WHERE
      ticket.profileid = profile.id AND
      ( ticket.tstatusid = 9 OR ticket.tstatusid = 14 )
  ) as ticket_9_14
FROM profile
ORDER BY lastname;

P.S. Untested!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.