powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Снова запрос
11 сообщений из 11, страница 1 из 1
Снова запрос
    #39701242
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Написал запрос из 3х таблиц:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT m1.ml_kodv,m1.ml_lc,m1.ml_namlc,
d1.do_date,d1.do_lc1,d1.do_lc2,d1.do_sumv,d1.do_sumn,d1.do_kom,
d2.ds_date,d2.ds_lc1,d2.ds_nlatl,d2.ds_adrl FROM Dbmaslc m1 JOIN
Dokod d1 ON m1.ml_lc=d1.do_lc1 JOIN (SELECT d2.ds_date,d2.ds_lc1,d2.ds_nlatl,d2.ds_adrl FROM dokswt) as d2 ON d2.ds_lc1=d1.do_lc1
WHERE d1.do_date BETWEEN "+Thisform.cl_date1+" AND "+Thisform.cl_date2
AND substring(d1.do_lc2,4,5)='10102'
AND substring(d1.do_lc1,4,5)<>'60303'
AND d1.do_lc1=m1.ml_lc and d1.do_kodv=m1.ml_kodv
ORDER BY do_kodv, do_st, do_date, do_lc1, do_lc2

Подскажите пожалуйста, где я не правильно делаю?
...
Рейтинг: 0 / 0
Снова запрос
    #39701247
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ularsoftПодскажите пожалуйста, где я не правильно делаю?1. Не описал критерии правильности. Для чего этот запрос, что он должен выбрать - неизвестно.
2.
Код: sql
1.
JOIN (SELECT d2.ds_date,d2.ds_lc1,d2.ds_nlatl,d2.ds_adrl FROM dokswt) as d2 


вызывает сомнения в адекватности писателя. Ибо это всего лишь
Код: sql
1.
JOIN  dokswt as d2 


Больше сказать нечего ибо см. п. 1
...
Рейтинг: 0 / 0
Снова запрос
    #39701266
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Sizov1. Не описал критерии правильности. Для чего этот запрос, что он должен выбрать - неизвестно. m1 - отправители
Код: sql
1.
2.
3.
ml_kodv - код валюты,
ml_lc - счет отправителя, 
ml_namlc - название отправителя

d1 - проводки
Код: sql
1.
2.
3.
4.
5.
6.
do_date - дата сделки, 
do_lc1 - дебет, 
do_lc2 - кредит, 
do_sumv - сумма в валюте, 
do_sumn - сумма в нацвалюте, 
do_kom - назначение

d2 - получатели
Код: sql
1.
2.
3.
4.
ds_date - дата сделки, 
ds_lc1 - счет получателя, 
ds_nlatl - название получателя, 
ds_adrl - адрес получателя
...
Рейтинг: 0 / 0
Снова запрос
    #39701268
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из этих трех надо получить 4 таблицу со следующими полями:
Дт Кт Дата Сумма Сумма Назначение Валюта Страна Название отправителя Название получателя
...
Рейтинг: 0 / 0
Снова запрос
    #39701287
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ularsoftИз этих трех надо получить 4 таблицу со следующими полями:
Дт Кт Дата Сумма Сумма Назначение Валюта Страна Название отправителя Название получателя
Убери WHERE, т.к. по ТЗ нужны все записи
...
Рейтинг: 0 / 0
Снова запрос
    #39701298
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TУбери WHERE, т.к. по ТЗ нужны все записи За определенный период нужны записи
...
Рейтинг: 0 / 0
Снова запрос
    #39701300
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ularsoftDima TУбери WHERE, т.к. по ТЗ нужны все записи За определенный период нужны записи
Тогда все верно. Проблема в чем?
...
Рейтинг: 0 / 0
Снова запрос
    #39701301
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозрительная строка
Код: sql
1.
WHERE d1.do_date BETWEEN "+Thisform.cl_date1+" AND "+Thisform.cl_date2


Ты запрос на какой-то SQL-сервер отправляешь?
...
Рейтинг: 0 / 0
Снова запрос
    #39701308
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, Вам уже сказали. Вот это не правильно

Код: sql
1.
JOIN (SELECT d2.ds_date,d2.ds_lc1,d2.ds_nlatl,d2.ds_adrl FROM dokswt) as d2



Не может алиас d2 использоваться внутри подзапроса если это алиас самого подзапроса. Внутри надо или вообще алиасы не использовать, либо указывать dokswt

т.е. или так

Код: sql
1.
JOIN (SELECT dokswt.ds_date,dokswt.ds_lc1,dokswt.ds_nlatl,dokswt.ds_adrl FROM dokswt) as d2



или так

Код: sql
1.
JOIN (SELECT ds_date,ds_lc1,ds_nlatl,ds_adrl FROM dokswt) as d2
...
Рейтинг: 0 / 0
Снова запрос
    #39701313
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, и с датами тоже вопрос. Обычно даты окружены какими-то спец.символами. Например, в FoxPro - это фигурные скобки. В MS SQL обычно передают как символьную строку, т.е. в одинарных кавычках. Есть еще вариант окружать символами решетки

Т.е. формировать строка в виде

Код: sql
1.
WHERE d1.do_date BETWEEN "+Thisform.cl_date1+" AND "+Thisform.cl_date2



недостаточно. Надо добавить символы-ограничители дат и, возможно, преобразовать даты к нужному формату
...
Рейтинг: 0 / 0
Снова запрос
    #39701366
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если Thisform.cl_date1 и Thisform.cl_date2 типа date, то вообще никаких ограничителей не надо:
Код: sql
1.
BETWEEN Thisform.cl_date1 AND Thisform.cl_date2
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Снова запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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