SQLinfo.ru - Все о MySQL PG day 17

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.08.2016 11:44:15

JohnMcIntyre
Участник
Зарегистрирован: 11.08.2016
Сообщений: 6

Правильное представление

Делаю вьювер

select distinct `ats`.`rayon` AS `Rayon`,
sum(if((`ats`.`ats` = '1'),1,0)) AS `01`,
sum(if((`ats`.`ats` = '2'),1,0)) AS `02`,
sum(if((`ats`.`ats` = '3'),1,0)) AS `03`,
sum(if((`ats`.`ats` = '4'),1,0)) AS `04`,
sum(if((`ats`.`ats` = '5'),1,0)) AS `05`,
sum(if((`ats`.`ats` = '6'),1,0)) AS `06`,
sum(if((`ats`.`ats` = '7'),1,0)) AS `07`
from `ats`
group by `ats`.`rayon`
order by `ats`.`rayon`+ 0

Возвращает данные как decimal, а мне нужно получить INT, реальное число.
Подскажите как сделать.
Спасибо.

Неактивен

 

#2 11.08.2016 13:21:00

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3749

Re: Правильное представление

На уровне MySQL возвращается int. В какой среде делаете запрос?

Неактивен

 

#3 11.08.2016 13:28:12

JohnMcIntyre
Участник
Зарегистрирован: 11.08.2016
Сообщений: 6

Re: Правильное представление

Работаю в  MySQL (5.1.61) в phpmyadmin.
Таки возвращает decimal, как ни крути, Каст и конверт уже перепробовал, но возможно, я просто ошибаюсь в синтаксисе.
Вот и спрашиваю:
sum(if((`ats`.`ats` = '1'),1,0)) AS `01`,
надо вернуть в Инт.

Неактивен

 

#4 11.08.2016 13:29:45

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3749

Re: Правильное представление

Это скорее всего особенность отображения phpmyadmin и к MySQL отношения не имеет. Попробуйте для теста

SELECT 2+2;

Неактивен

 

#5 11.08.2016 13:42:36

JohnMcIntyre
Участник
Зарегистрирован: 11.08.2016
Сообщений: 6

Re: Правильное представление

4
ИНТ
А в моем вьювере, который выше - децимал

Неактивен

 

#6 11.08.2016 13:47:32

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3749

Re: Правильное представление

Попробуйте тогда так:

sum(if((`ats`.`ats` = '1'),1,0))+0 AS `01`,

Неактивен

 

#7 11.08.2016 13:51:56

JohnMcIntyre
Участник
Зарегистрирован: 11.08.2016
Сообщений: 6

Re: Правильное представление

получилось вместо decimal(23,0) - decimal(24,0)

Неактивен

 

#8 11.08.2016 14:05:23

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3749

Re: Правильное представление

sum() по построению всегда выдает decimal. Попробуйте так:

CAST(sum(if((`ats`.`ats` = '1'),1,0)) AS SIGNED) AS `01`,

Неактивен

 

#9 11.08.2016 14:11:54

JohnMcIntyre
Участник
Зарегистрирован: 11.08.2016
Сообщений: 6

Re: Правильное представление

Есть! Бигинт! Это отлично!
Спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson