powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ЗАПРОС
6 сообщений из 6, страница 1 из 1
ЗАПРОС
    #32202697
irina_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите с запросом, а то похоже своей головы не хватает. Имеется две базы
d1 (с полями - field1,field2) и d2(с полями - field1,field2) , надо вытащить записи из d1 у которых d1.field1=d2.field1, а d1.field2<>d2.field2, то есть
d1 d2
field1 field2 field1 field2
1 2 1 3
1 3 1 4
1 4 2 5
2 5 3 6
2 6 3 8
2 7
3 8
в итоге d3 field1 field2
1 2
2 6
2 7

запрос типа SELECT DISTINCT d1.field1,d1.field2 from d1,d2 where d1.field1=d2.field1.and. d1.field2<>d2.field2 - не работает
...
Рейтинг: 0 / 0
ЗАПРОС
    #32202743
Victor Am
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это работает, а по по эффективности и скорости профи добавят:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT DISTINCT ;
 d1.field1, ;
 d1.field2 ;
from d1 ;
where ;
d1.field2 NOT IN ;
( ;
SELECT ;
d2.field2 ;
FROM d2 ;
WHERE ;
d1.field1 = d2.field1 ;
) 
...
Рейтинг: 0 / 0
ЗАПРОС
    #32203050
irina_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ. Увы, при этом получаются только d1.field2 , которых нет в базе d2. Но в выборку не попадают данные d1.field2 , которые есть в d2, но с другими значениями полей field1. Почему-то связка d1.field1 = d2.field1 в подзапросе не работает.
...
Рейтинг: 0 / 0
ЗАПРОС
    #32203186
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что связку тоже нужно указать в подзапросе.Коррелированный запрос в фоксе не работает.

Но я бы написал наверное где-то . Сорри не проверял
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT d1.* ;
from d1 ;
  left join d2 ;
on d1.field1 = d2.field1 and ;
    d1.field2<>d2.field2 ;
where !isnull(d2.field1) ;
into cursor d3 
 
...
Рейтинг: 0 / 0
ЗАПРОС
    #32203220
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри забыл DISTINCT. Правильный вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT distinct d1.* ;
from d1 ;
  left join d2 ;
on d1.field1 = d2.field1 and ;
    d1.field2<>d2.field2 ;
where !isnull(d2.field1) ;
into cursor d3 
...
Рейтинг: 0 / 0
ЗАПРОС
    #32203297
NE_Dimon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нумбер ван:
Но я бы написал наверное где-то . Сорри не проверял
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT d1.* ;
from d1 ;
  left join d2 ;
on d1.field1 = d2.field1 and ;
    d1.field2<>d2.field2 ;
where !isnull(d2.field1) ;
into cursor d3 


Нумбер ту:
сорри забыл DISTINCT. Правильный вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT distinct d1.* ;
from d1 ;
  left join d2 ;
on d1.field1 = d2.field1 and ;
    d1.field2<>d2.field2 ;
where !isnull(d2.field1) ;
into cursor d3


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


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