Справка для вложенного запроса

#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, за исключением того, что я бы избегал группировки, если ваш список пользователей уже уникален.