Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
доброго утра! при создании запроса в VFP вылетает ошибка. не поддерживается оператор case?
select norma.*, nor case ;
when unr.pan="A" or unr.pan="À" then unr.unr1*pkr.plo*pkr.tol*unei.k as nor ;
when unr.pan="P" or unr.pan="Ð" then unr.unr1*pkr.plo*pkr.tol*unei.k*1.667*1.006 as nor ;
else unr.unr1*pkr.plo*unei.k as nor ;
END ;
from unr, pkr, unei, norma where pkr.ods=norma.ods and unr.obm=norma.obm ;
and unr.tpr=norma.tpr and unr.kets=unei.kets
4 окт 18, 09:35    [21694820]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
case не поддерживается. Можно заменить на icase()
4 окт 18, 09:39    [21694824]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

спасибо!
4 окт 18, 09:48    [21694829]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

переделала. ошибка: отсутствует имя функции ) вроде все так должно быть....
select norma.*, nor ;
(icase unr.pan="A" or unr.pan="À", unr.unr1*pkr.plo*pkr.tol*unei.k as nor, ;
unr.pan="P" or unr.pan="Ð", unr.unr1*pkr.plo*pkr.tol*unei.k*1.667*1.006 as nor, ;
unr.unr1*pkr.plo*unei.k as nor) ;
from unr, pkr, unei, norma where pkr.ods=norma.ods and unr.obm=norma.obm ;
and unr.tpr=norma.tpr and unr.kets=unei.kets
4 окт 18, 10:09    [21694846]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
select norma.*, ;
icase( unr.pan="A" or unr.pan="À", unr.unr1*pkr.plo*pkr.tol*unei.k, ;
unr.pan="P" or unr.pan="Ð", unr.unr1*pkr.plo*pkr.tol*unei.k*1.667*1.006, ;
unr.unr1*pkr.plo*unei.k)  as nor;
from unr, pkr, unei, norma where pkr.ods=norma.ods and unr.obm=norma.obm ;
and unr.tpr=norma.tpr and unr.kets=unei.kets
4 окт 18, 10:13    [21694853]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

Точно! но при обработке снова ошибка: command contains unrecognized phrase/keyword ...
4 окт 18, 10:20    [21694862]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
Какая версия фокса?
4 окт 18, 10:24    [21694868]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

VPF 6.0
4 окт 18, 10:24    [21694869]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

делала еще через iff, то же самое
select norma.*, nor ;
iif ((unr.pan="A" or unr.pan="À"), unr.unr1*pkr.plo*pkr.tol*unei.k as nor, ;
iif ((unr.pan="P" or unr.pan="Ð"), unr.unr1*pkr.plo*pkr.tol*unei.k*1.667*1.006 as nor, unr.unr1*pkr.plo*pkr.tol*unei.k*1.006 as nor))  ;
from unr, pkr, unei, norma where pkr.ods=norma.ods and unr.obm=norma.obm ;
and unr.tpr=norma.tpr and unr.kets=unei.kets
4 окт 18, 10:30    [21694875]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
TsYekaterina
Dima T,

VPF 6.0

В 6-ке не было icase(), там только через iif()

Найди отличия между твоим 21694846 и моим 21694853 icase() и попробуй правильно написать с использованием iif()
4 окт 18, 10:36    [21694879]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

окей! спасибо!
4 окт 18, 10:38    [21694881]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

у меня к Вам еще вопрос: при условиях в запросе результат выводится в 2 строки: в первой строке значение nor равно 0,000000, во второй строке результат nor тот, который должен быть
соответственно формулам.
как убрать строку с нулевым значением?
4 окт 18, 13:08    [21695116]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
... having nor != 0
4 окт 18, 13:40    [21695169]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

так не работает, а если использовать с group by, результат в nor не верен будет.
4 окт 18, 13:57    [21695198]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
TsYekaterina
Dima T,

так не работает, а если использовать с group by, результат в nor не верен будет.

Должно работать без group by. Какая ошибка?
having это постусловие, проверяется результат запроса.
4 окт 18, 14:05    [21695214]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

ошибки нет, результат без изменений
4 окт 18, 14:07    [21695216]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
Странно.

Попробуй во where добавить
where ... and unr.unr1*pkr.plo*pkr.tol*unei.k != 0
4 окт 18, 14:09    [21695218]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
А может там действительно не ноль? Проверь
select norma.*, unr.unr1, pkr.plo, pkr.tol, unei.k ...

в той строке где ноль должен быть ноль в одном из множителей: unr1, plo, tol, k
4 окт 18, 14:14    [21695226]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

сто процентов не 0. в результате selecta c условием, например, norma.pan="A" or norma.pan="À", выводится 2 одинаковые строки, но с разным nor: у одной записи 0,00000, у другой, как надо.
4 окт 18, 14:17    [21695232]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

во условие добавила, все нормалёк! спасибо огроменное!
4 окт 18, 14:19    [21695233]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Dima T,

можно задать еще вопрос (уж извините за надоедливость!)? такой простой запрос:
select pkr.ods, pkr.oup, pkr.tpr, pkr.prs from pkr, norma where pkr.ods=norma.ods

в результате записи дублируются. например, вместо 16 шт - (1113311315), выводится 32 шт. (1113311315).
4 окт 18, 16:32    [21695479]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1427
TsYekaterina
Dima T,

можно задать еще вопрос (уж извините за надоедливость!)?
Можно.
такой простой запрос:
select pkr.ods, pkr.oup, pkr.tpr, pkr.prs from pkr, norma where pkr.ods=norma.ods

в результате записи дублируются. например, вместо 16 шт - (1113311315), выводится 32 шт. (1113311315).
И что? Где вопрос?
4 окт 18, 16:36    [21695482]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
TsYekaterina
Member

Откуда:
Сообщений: 205
Sergey Sizov,

как сделать, чтобы было 16, а не 32 записи?
4 окт 18, 16:37    [21695485]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1427
TsYekaterina
Sergey Sizov,

как сделать, чтобы было 16, а не 32 записи?
Правильно переписать запрос.
4 окт 18, 16:56    [21695506]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
TsYekaterina
Dima T,

можно задать еще вопрос (уж извините за надоедливость!)? такой простой запрос:
select pkr.ods, pkr.oup, pkr.tpr, pkr.prs from pkr, norma where pkr.ods=norma.ods

в результате записи дублируются. например, вместо 16 шт - (1113311315), выводится 32 шт. (1113311315).

Это говорит о том что данные не нормализованы и к ним нельзя применять select. Советую взять любую книгу про СУБД и прочитать там теорию про нормальные формы.

Язык SQL можно использовать только если данные хранятся согласно реляционной теории. Если под словом "таблица" понимается тоже что и таблица экселя, то SCAN ... ENDSCAN и самодельные костыли.
4 окт 18, 18:56    [21695684]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7832
Предположим, у таблиц есть такие записи

Таблица pkr

ods oup
11
12

Таблица norma

ods fld_1
13
14

Результат запроса

select * from pkr, norma where pkr.ods = norma.ods

будет такой

pkr.ods pkr.oup norma.ods norma.fld_1
1113
1114
1213
1214


Для простоты, можно считать результат объединения таблиц неким аналогом вложенных циклов. Т.е. для каждой записи таблицы pkr будут отобраны ВСЕ записи таблицы norma с тем же значением поля ods. Если у Вас в обоих таблицах есть несколько записей с одинаковым значением поля ods (т.е. связь типа много-ко-многим), то Вы и получите удвоение результата выборки

В отношение запросов Select-SQL понятие "текущая запись" просто не существует. Записи связываются между собой только и исключительно по значению полей, указанных в условии связи и никак иначе
5 окт 18, 09:31    [21696007]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Sergey Sizov
Member

Откуда:
Сообщений: 1427
Dima T
TsYekaterina
Dima T,

можно задать еще вопрос (уж извините за надоедливость!)? такой простой запрос:
select pkr.ods, pkr.oup, pkr.tpr, pkr.prs from pkr, norma where pkr.ods=norma.ods

в результате записи дублируются. например, вместо 16 шт - (1113311315), выводится 32 шт. (1113311315).

Это говорит о том что данные не нормализованы и к ним нельзя применять select. Советую взять любую книгу про СУБД и прочитать там теорию про нормальные формы.

Язык SQL можно использовать только если данные хранятся согласно реляционной теории. Если под словом "таблица" понимается тоже что и таблица экселя, то SCAN ... ENDSCAN и самодельные костыли.
Ну, это вы тут слегка перегнули...
Про степень нормализации сия ситуация не говорит ничего. Ибо мы не знаем, а автор, как обычно, посчитал это очевидным и недостойным упоминания, смысл данных в этих таблицах.
Ситуация показывает нам степень непонимания автором принципов работы запросов и стандартным для большинства людей неумением точно сформулировать свои мысли и желания даже на обычном языке, не говоря уж о языках программирования.
Вот сейчас в запросе она требует получить все сочетания записей из двух таблиц. А точно это ли ей надо? Судя по скудным комментариям ей таки надо записи из одной таблицы, имеющие значения в одном из полей, встречающиеся в в соответствующем поле другой таблицы. Согласитесь, что from pkr, norma where pkr.ods=norma.ods явно этому не соответствует? И что тут надо что-то другое написать? А то получается, что хочет одно, а требует другое и потом удивляется, что не получает желаемое.

2 TsYekaterina:
Таки займитесь правильным формулированием сначала задачи, а потом уже запрос по правильной формулировке пишИте.
Если сами не можете, то обращайтесь, но не темните, а полно описывайте данные и связанную с ними задачу.
5 окт 18, 09:41    [21696014]     Ответить | Цитировать Сообщить модератору
 Re: command contains unrecognized phrase/keyword  [new]
Dima T
Member

Откуда:
Сообщений: 13673
Sergey Sizov
Про степень нормализации сия ситуация не говорит ничего.

from pkr, norma where pkr.ods=norma.ods

это альтернативный способ записи
from pkr join norma on pkr.ods=norma.ods

раз есть дубли, значит ods не является ключом ни одной из упомянутых таблиц, следовательно надо либо сначала нормализовать исходные данные и потом делать select, либо решать другим способом.
В любом случае это говорит о непонимании реляционной теории и необходимости ее поизучать.

Sergey Sizov
А точно это ли ей надо?

Согласен. Возможно надо совсем другое.
5 окт 18, 09:57    [21696037]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / FoxPro, Visual FoxPro Ответить