Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос с датами / 10 сообщений из 10, страница 1 из 1
06.08.2011, 15:12
    #37383506
imbahunt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
Такой вопрос.
Есть две таблицы
table1 поля org orgregn drassum(дата)
vibordata поля nashadata(дата)

делаю запрос
SELECT Table1.org, Table1.orgregn;
FROM ;
db!vibordata ;
LEFT OUTER JOIN db!table1 ;
ON Vibordata.nashadata = Table1.drassm

Нужно чтобы выдало организацию у которой есть дата такая же или меньше поля nashadata.

Дело в том что если поставить <= то выводит все органицаии не зависимо есть там дата или совпадает она
А просто на "=" работает.
...
Рейтинг: 0 / 0
06.08.2011, 15:42
    #37383524
Makrosa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
imbahunt,

a sho v tablice vibordata tolko odno zapis?...
...
Рейтинг: 0 / 0
06.08.2011, 20:08
    #37383645
imbahunt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
Да там одна Запись. Для того чтобы выбрать именно по этой записи
...
Рейтинг: 0 / 0
06.08.2011, 21:12
    #37383672
Makrosa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
imbahunt,

a chto meshaet vziat iz etoi tablici etu datu "dt1=vibordata.nashadata" i sdelac viborku vpervom "select ... where drassum<=dt1..."
...
Рейтинг: 0 / 0
07.08.2011, 06:47
    #37383856
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
imbahunt,

уберите "LEFT OUTER" и читайте про виды джойнов.
...
Рейтинг: 0 / 0
07.08.2011, 12:47
    #37383982
imbahunt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
Блин чё то не получается. Не правильно выводит если делать Vibordata.nashadata >= table1.drassum
...
Рейтинг: 0 / 0
07.08.2011, 14:04
    #37384038
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
Вам уже "намекнули", что Вы не правильно понимаете что такое внешнее объединение (в данном случае LEFT JOIN). Вам надо заменить его на INNER JOIN

Код: plaintext
1.
2.
3.
SELECT Table1.org, Table1.orgregn ;
FROM db!vibordata ;
INNER JOIN db!table1 ON Vibordata.nashadata >= Table1.drassm

Чтобы понять, в чем "прикол" внешнего объединения добавьте в результат выборки поля из другой таблицы

Код: plaintext
1.
2.
3.
SELECT Table1.org, Table1.orgregn, Vibordata.nashadata ;
FROM db!vibordata ;
LEFT JOIN db!table1 ON Vibordata.nashadata >= Table1.drassm
...
Рейтинг: 0 / 0
07.08.2011, 14:25
    #37384056
imbahunt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
Спасибо. Но и это не помагает. Инер я делал изначально и то же самое.

table1
Org Orgregn Drassum
qqqqqqqqq 3452432423 01/01/2011
wwwwww 23423423423 / /
eeeeeeeee 2342366546 01/01/2011


Vibordata
Nashadata
01/01/2011


Должно вывести

qqqqqq 3452432423
eeeee 2342366546

Если в поле nashadata изменю на больше дату то эти органицации всё равно должно выдать.
а у меня получается что он мне выводит все три органицации.
...
Рейтинг: 0 / 0
07.08.2011, 14:46
    #37384077
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
"Пустая" дата "по определению" меньше любой даты. Если Вы хотите исключить из рассмотрения пустую дату, то это надо оговаривать отдельно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
* Исходные данные
create cursor table1 (Org C( 10 ), Orgregn C( 10 ), Drassum D)
insert into table1 (Org, Orgregn, Drassum) values ("qqqqqqqqq", "3452432423", {^ 2011 - 01 - 01 })
insert into table1 (Org, Orgregn, Drassum) values ("wwwwww", "23423423423", {})
insert into table1 (Org, Orgregn, Drassum) values ("eeeeeeeee", "2342366546", {^ 2011 - 01 - 01 })

* Таблица для фильтрации данных
create cursor Vibordata (Nashadata D)
insert into Vibordata (Nashadata) values ({^ 2011 - 01 - 01 })

* Собственно выборка
select table1.Org, table1.Orgregn ;
from table1 ;
inner join Vibordata on Vibordata.Nashadata >= table1.Drassum ;
where table1.Drassum <> {}

Можно вместо выражения table1.Drassum > {} написать empty(table1.Drassum) = .F., но в этом случае оптимизация невозможно. Впрочем, если общее количество записей не велико, то на это можно не обращать внимания.
...
Рейтинг: 0 / 0
07.08.2011, 15:00
    #37384089
imbahunt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с датами
Очень благодарен. Получилось.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрос с датами / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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