У меня такой запрос:

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, чтобы получить "тип пользователя".

Что не так с моим запросом?

0
sebelk 26 Апр 2016 в 20:25

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
2
Gerfried 26 Апр 2016 в 17:31

Вы вообще не ПРИСОЕДИНЯЕТЕСЬ к таблице glpi_tickets_users в своем запросе, поэтому вы не можете выбрать из нее. Вам необходимо изменить свой запрос, включив в него glpi_tickets_users .

1
Sulaiman Adeeyo 26 Апр 2016 в 17:30

Я не уверен в структуре данных ваших таблиц, но разве не столбец типа в таблице 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 
1
SanF 26 Апр 2016 в 17:30

Это потому, что нигде в вашем запросе вы не указываете таблицу glpi_tickets_users. Ни в пункте from, ни в каком-либо из пунктов join. Если вам не нужен этот столбец glpi_tickets_users.type, просто удалите его из запроса, и он должен работать нормально.

3
Rahul 26 Апр 2016 в 17:30