#sql
#sql
Вопрос:
моя хостинговая компания не позволяет мне сохранять запрос / просмотр в базе данных mysql (не спрашивайте меня .. почему! я не знаю), поэтому я должен создать все в одном вложенном запросе (это сложно для моих навыков sql). Мое приложение представляет собой простую «систему управления билетами», здесь структура таблицы ticket_master
ticket_id
assignedto_user
...
Другая таблица, для пользователей
userid
username
Я должен получить количество обращений для каждого пользователя, начиная с таблицы USERS, чтобы включить ВСЕХ пользователей (либо у которых не был открыт запрос).
Результат должен быть
userid, username, tot_ticket
1, mr a, 3
2, mr b, Null (or zero)
3, mr c, 2
4, mr d, Null (or zero)
...
Заранее спасибо!
Ответ №1:
Select U.userid, U.username
, Count(TM.ticket_id) As tot_ticket
From users As U
Left Join ticket_master As TM
On U.userid = TM.assignedto_user
Group By U.userid, U.username
Комментарии:
1.
COUNT
никогда не может быть,NULL
предположительно, вам понадобитсяNULLIF
или что-то еще.2. @Martin — Да, да. Пришло мне в голову, когда я перечитывал свой запрос.
3. @Martin — (Больше всего я ругаю себя. Нужно достать еще кофе …)
4. wow..it работает… так просто? как это возможно ?!? 😉 я думал, что использую какой-нибудь гипер-вложенный sql … !
Ответ №2:
SELECT
userid,
username,
COUNT(ticket_id)
FROM users
LEFT OUTER JOIN ticket_master on users.userid = ticket_master.assignedto_user
Не сильно отличается от ответа @Thomas, за исключением того, что я бы избегал группировки, если ваш список пользователей уже уникален.