SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 15.12.2013 19:56:43

voevodin74
Участник
Зарегистрирован: 15.12.2013
Сообщений: 5

Ошибка 1064

Здравствуйте. Подскажите пожалуйста делаю следующий запрос к базе данных


CREATE VIEW     Detal_Ekonomist as
SELECT     name, cast(price as float)/1000 as price, colour, cast(weight as float)/1000 as weight,
        case when price < 1000
then 'Deshevaya'    else 'Dorogaya'
        end as Deshevizna      
FROM     Detal
ORDER BY price DESC, name, color, weight;


Получаю ошибку #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'float)/1000 as price, colour, cast(weight as float)/1000 as weight, case when' at line 2

Как исправить эту проблему? Больше часа ищу ответ и не могу найтиsad

Неактивен

 

#2 15.12.2013 20:02:46

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Ошибка 1064

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

show create table Detal;
, посмотрим.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 15.12.2013 20:04:53

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

Re: Ошибка 1064

FLOAT недопустимый тип для CAST, используйте DECIMAL
http://dev.mysql.com/doc/refman/5.0/en/ … ction_cast

Неактивен

 

#4 15.12.2013 20:10:01

voevodin74
Участник
Зарегистрирован: 15.12.2013
Сообщений: 5

Re: Ошибка 1064

rgbeast написал:

FLOAT недопустимый тип для CAST, используйте DECIMAL
http://dev.mysql.com/doc/refman/5.0/en/ … ction_cast

Спасибо!!! Действительно заработало!
Правда заработало только в одном случае. Если взять немного более сложный вариант

CREATE VIEW     Postavka_Ekonomist as
SELECT     Detal.name as Detal,
        Postavshik.City,
        Detal.Colour,
        case when Detal.Price < 1000
then 'Deshevaya' else 'Dorogaya'    
end as DesheviznaDetal,
        Postavshik.name as Postavshik,
        case when Postavshik.rating < 6
then 'NeNadezhniy' else 'Nadezhniy'
        end as Nadeshnost,
        cast (Detal.Weight*Postavka.detal_weight as DECIMAL)/1000 as VesPostavki,
        cast Detal.Price*Postavka.detal_weight as DECIMAL)/1000 as PricePostavka
FROM     Postavshik, Detal, Proekt, Postavka
WHERE     Postavka.detal_id=Detal.id
    AND     Postavka.postavshik_id=Postavshik.id
    AND     Postavka.proekt_id=Proekt.id
ORDER BY     Detal.name, Postavshik.name, PricePostavka DESC, VesPostavki DESC; 
 

то остается все та же ошибка 1064:(
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECIMAL)/1000 as VesPostavki,
        cast Detal.Price*Postavka.detal_weight as DECI' at line 12

Неактивен

 

#5 15.12.2013 20:20:44

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

Re: Ошибка 1064

пропущена открывающая скобка:
cast (Detal.Price*Postavka.detal_weight as DECIMAL)

Неактивен

 

#6 15.12.2013 20:21:26

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

Re: Ошибка 1064

Может быть тоже будет полезно: http://sqlinfo.ru/articles/info/15.html

Неактивен

 

#7 15.12.2013 20:30:25

voevodin74
Участник
Зарегистрирован: 15.12.2013
Сообщений: 5

Re: Ошибка 1064

rgbeast написал:

пропущена открывающая скобка:
cast (Detal.Price*Postavka.detal_weight as DECIMAL)

Но к сожалению это не решило проблемы. И опять эта ошибка и опять новый комментарий
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECIMAL)/1000 as VesPostavki,
        cast (Detal.Price*Postavka.detal_weight as DEC' at line 12

sad

Неактивен

 

#8 15.12.2013 21:21:41

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Ошибка 1064

Какая версия сервера MySQL?

Неактивен

 

#9 15.12.2013 21:23:15

voevodin74
Участник
Зарегистрирован: 15.12.2013
Сообщений: 5

Re: Ошибка 1064

vasya написал:

Какая версия сервера MySQL?

5.5.25 - MySQL Community Server (GPL)

Неактивен

 

#10 15.12.2013 21:27:19

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Ошибка 1064

Уберите пробел после cast
Если не поможет, то покажите структуру таблиц Postavshik, Detal, Proekt, Postavka, чтобы можно было воспроизвести ошибку.

Неактивен

 

#11 15.12.2013 21:33:04

voevodin74
Участник
Зарегистрирован: 15.12.2013
Сообщений: 5

Re: Ошибка 1064

vasya написал:

Уберите пробел после cast
Если не поможет, то покажите структуру таблиц Postavshik, Detal, Proekt, Postavka, чтобы можно было воспроизвести ошибку.

Все заработало! Спасибо!

Неактивен

 

Board footer

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