Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос! / 4 сообщений из 4, страница 1 из 1
04.12.2003, 09:28
    #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
04.12.2003, 09:38
    #32342903
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос!
Код: plaintext
ON M_payn.code_cat = Categ.code and; 
это как бы не понятно ;)
а ваще-то джоинт выполняеца по как бы ПК и ФК для связи, а уточнение просто перенеси в WHERE
...
Рейтинг: 0 / 0
04.12.2003, 10:19
    #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
04.12.2003, 12:03
    #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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос! / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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