У меня такой запрос:
SELECT
z.id,users.name,e.name,tt.date,
CASE WHEN z.priority = 6 THEN 'Mayor' WHEN z.priority = 5 THEN 'Muy urgente'
WHEN z.priority = 4 THEN 'Urgente'WHEN z.priority = 3 THEN 'Mediana'
WHEN z.priority = 2 THEN 'Baja' WHEN z.priority =1 THEN 'Muy baja' END,
ROUND(SUM(tt.actiontime/3600),2) AS HORAS, c.name, i.name,
glpi_tickets_users.type
FROM glpi_tickettasks tt
INNER JOIN glpi_tickets z ON tt.tickets_id = z.id
LEFT JOIN glpi_itilcategories i ON z.itilcategories_id = i.id
INNER JOIN glpi_users AS users ON users.id = tt.users_id
INNER JOIN glpi_users AS req ON req.id = glpi_tickets_users.users_id
LEFT JOIN glpi_usercategories c ON c.id = users.usercategories_id
INNER JOIN glpi_entities e ON z.entities_id = e.id
WHERE tt.date>'2016-01-06' and tt.date<'2016-01-06'
GROUP BY tt.users_id,tt.id
ORDER BY users.name limit 5
Выдает следующую ошибку:
ОШИБКА 1054 (42S22) в строке 1: неизвестный столбец 'glpi_tickets_users.type' в 'списке полей'
Мне нужно дважды использовать таблицу glpi_users
, чтобы получить "тип пользователя".
Что не так с моим запросом?
4 ответа
Вы пока не присоединили пользователей табличных glpi-билетов в своем запросе.
SELECT z.id,users.name,e.name,tt.date,CASE WHEN z.priority = 6 THEN 'Mayor' WHEN z.priority = 5 THEN 'Muy urgente' WHEN z.priority = 4 THEN 'Urgente'WHEN z.priority = 3 THEN 'Mediana' WHEN z.priority = 2 THEN 'Baja' WHEN z.priority =1 THEN 'Muy baja' END,ROUND(SUM(tt.actiontime/3600),2) AS HORAS,c.name,i.name,glpi_tickets_users.type
FROM glpi_tickettasks tt
INNER JOIN glpi_tickets z ON tt.tickets_id = z.id
LEFT JOIN glpi_itilcategories i ON z.itilcategories_id = i.id
INNER JOIN glpi_users AS users ON users.id = tt.users_id
/**here is the join to glpi_tickets_users **/
INNER JOIN glpi_tickets_users ON users.id = glpi_tickets_users.users_id
INNER JOIN glpi_users AS req ON req.id = glpi_tickets_users.users_id
LEFT JOIN glpi_usercategories c ON c.id = u.usercategories_id
INNER JOIN glpi_entities e ON z.entities_id = e.id
WHERE tt.date>'2016-01-06' and tt.date<'2016-01-06' GROUP BY tt.users_id,tt.id ORDER BY users.name limit 5
Вы вообще не ПРИСОЕДИНЯЕТЕСЬ к таблице glpi_tickets_users в своем запросе, поэтому вы не можете выбрать из нее. Вам необходимо изменить свой запрос, включив в него glpi_tickets_users .
Я не уверен в структуре данных ваших таблиц, но разве не столбец типа в таблице glpi_users?
В этом случае замените glpi_tickets_users.type
на glpi_users.type
Последний запрос будет таким:
SELECT z.id,users.name,e.name,tt.date,CASE WHEN z.priority = 6 THEN 'Mayor' WHEN z.priority = 5 THEN 'Muy urgente' WHEN z.priority = 4 THEN 'Urgente'WHEN z.priority = 3 THEN 'Mediana' WHEN z.priority = 2 THEN 'Baja' WHEN z.priority =1 THEN 'Muy baja' END,ROUND(SUM(tt.actiontime/3600),2) AS HORAS,c.name,i.name,glpi_users.type
FROM glpi_tickettasks tt
INNER JOIN glpi_tickets z ON tt.tickets_id = z.id
LEFT JOIN glpi_itilcategories i ON z.itilcategories_id = i.id
INNER JOIN glpi_users AS users ON users.id = tt.users_id
INNER JOIN glpi_users AS req ON req.id = glpi_tickets_users.users_id
LEFT JOIN glpi_usercategories c ON c.id = u.usercategories_id
INNER JOIN glpi_entities e ON z.entities_id = e.id
WHERE tt.date>'2016-01-06' and tt.date<'2016-01-06' GROUP BY tt.users_id,tt.id ORDER BY users.name limit 5
Это потому, что нигде в вашем запросе вы не указываете таблицу glpi_tickets_users
. Ни в пункте from
, ни в каком-либо из пунктов join
. Если вам не нужен этот столбец glpi_tickets_users.type
, просто удалите его из запроса, и он должен работать нормально.
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.