Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 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

Откуда:
Сообщений: 13672
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]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / FoxPro, Visual FoxPro Ответить