powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос!
4 сообщений из 4, страница 1 из 1
Запрос!
    #32342888
Zakadrilla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не работает правильно запрос.
При запуске выдает ошибку «Command contains unrecognized phrase/keyword». Если заменять ON на AND, то ошибка исчезает, но результаты запроса не верные. В чем я не права?

SET safe off
SELECT M_payn.code_cat, M_payn.code_pr, M_payn.code_pay,;
M_paybook.name_pay, SUM(M_payn.summ), M_payn.pay_year, M_payn.pay_month,;
SUM(M_payn.time_clock), SUM(M_payn.time_day), Categ.name ;
FROM data3!m_payn INNER JOIN data3!m_paybook ;
INNER JOIN categ ;
ON M_payn.code_pr = Categ.code_pr ;
ON M_payn.code_cat = Categ.code and;
ON M_payn.code_pay = M_paybook.code_pay ;
ON M_payn.code_pr = M_paybook.code_pr ;
WHERE M_payn.pay_month = "01" ;
AND M_payn.pay_year = "2003" ;
GROUP BY M_payn.code_pr, M_payn.code_cat, M_payn.code_pay ;
ORDER BY M_payn.code_pr, M_payn.code_cat, M_payn.code_pay ;
into dbf home()+"\datkt\cat.dbf"
Copy to cat1.xls Type xl5
SET safe on

Спасибо за внимание…
...
Рейтинг: 0 / 0
Запрос!
    #32342903
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
ON M_payn.code_cat = Categ.code and; 
это как бы не понятно ;)
а ваще-то джоинт выполняеца по как бы ПК и ФК для связи, а уточнение просто перенеси в WHERE
...
Рейтинг: 0 / 0
Запрос!
    #32342972
Por
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Por
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SELECT ;
           M_payn.code_cat,;
           M_payn.code_pr, ;
           M_payn.code_pay,; 
           M_paybook.name_pay, ;
           SUM(M_payn.summ), ;
           M_payn.pay_year, ;
           M_payn.pay_month,; 
           SUM(M_payn.time_clock),;
           SUM(M_payn.time_day),
           Categ.name ; 
FROM ;
           data3!m_payn ;
                INNER JOIN data3!m_paybook ON; 
                      M_payn.code_pay = M_paybook.code_pay AND;
                      M_payn.code_pr = M_paybook.code_pr ; 
                INNER JOIN categ ON;
                      M_payn.code_pr = Categ.code_pr AND;
                      M_payn.code_cat = Categ.code ; 
WHERE ;
          M_payn.pay_month =  "01 " AND; 
          M_payn.pay_year =  "2003 " ; 
GROUP BY;
          M_payn.code_pr,;
          M_payn.code_cat,;
          M_payn.code_pay ; 
ORDER BY ;
          M_payn.code_pr, ;
          M_payn.code_cat,;
          M_payn.code_pay ; 
INTO DBF ;
          home()+ "\datkt\cat.dbf" 
...
Рейтинг: 0 / 0
Запрос!
    #32343183
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сведению:

При использовании оператора JOIN для связи нескольких таблиц правильный синтаксис выглядит так:

FROM Tab1 a ;
INNER JOIN Tab2 b ON a.ID=b.ID AND b.ID2=a.ID2 ;
INNER JOIN Tab3 c ON a.ID=c.ID

Т.е. оператор "ON" должен следовать сразу за соответсвующим JOIN и для одного JOIN может быть только один ON, поскольку за ним следует условие связи таблиц.

В твоем случае у тебя на 2 JOIN приходит 3 ON и они расположены не в правильном порядке.

До VFP7 включительно построитель запросов некорректно конструировал строку запроса. Построитель делает запрос вида

FROM ... JOIN ... JOIN ... ON ... ON

а должно быть

FROM ... JOIN ... ON ... JOIN ... ON ...

Такой некорректный синтаксис может привести к неверному выполнению запроса
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]