powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подскажите по IN () в SELECT SQL
6 сообщений из 6, страница 1 из 1
Подскажите по IN () в SELECT SQL
    #34405525
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

У меня конструкция условия в SELECT SQL такая:
Код: plaintext
1.
2.
   WHERE Cases.CaseID NOT IN (SELECT CaseID FROM CasesDecisions) ;
     AND Cases.CaseID NOT IN (SELECT CaseID FROM CasesDecisionsValid) ;
Это нельзя ли заменить как-то одним SELECT-ом? Что-то типа
Код: plaintext
WHERE Cases.CaseID NOT IN (SELECT DISTINCT CaseID FROM CasesDecisions,CasesDecisionsValid) ;

сенксь

вфп9
...
Рейтинг: 0 / 0
Подскажите по IN () в SELECT SQL
    #34405544
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А самому по-пробовать?
...
Рейтинг: 0 / 0
Подскажите по IN () в SELECT SQL
    #34405562
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробовал,
Код: plaintext
WHERE Cases.CaseID NOT IN (SELECT DISTINCT CaseID FROM CasesDecisions,CasesDecisionsValid)
не работает - ошибка, укажите поле уникально :(. Можно, конечно в два разных столбца выбрать (CaseID1, CaseID2), но какже тода DISTINCT и вообще, будет ли IN обрабатывать оба столбца?
...
Рейтинг: 0 / 0
Подскажите по IN () в SELECT SQL
    #34405579
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну типа такого

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create cursor test (f1 int)

CREATE CURSOR CasesDecisions (f1 int)

CREATE CURSOR CasesDecisionsValid (f1 int)

INSERT INTO test VALUES ( 1 )
INSERT INTO test VALUES ( 2 )
INSERT INTO test VALUES ( 3 )
INSERT INTO test VALUES ( 4 )

INSERT INTO CasesDecisions VALUES ( 2 )

INSERT INTO CasesDecisionsValid VALUES ( 3 )

SELECT * FROM test WHERE ;
f1 NOT in (SELECT IIF(ISNULL(a.f1), b.f1, a.f1) as f1 ;
FROM CasesDecisions a FULL JOIN CasesDecisionsValid b ON a.f1 = b.f1) 
...
Рейтинг: 0 / 0
Подскажите по IN () в SELECT SQL
    #34405793
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы подзапрос в IN
написал бы так

Код: plaintext
1.
2.
3.
SELECT DISTINCT CaseID FROM CasesDecisions
union 
SELECT CaseID FROM CasesDecisionsValid
или даже
Код: plaintext
1.
2.
SELECT  CaseID FROM CasesDecisions 
union all
SELECT CaseID FROM CasesDecisionsValid

Нужно смотреть на стоимость устранения дубликатов в подзапросе против стоимости поиска в этом самом подзапросе.
Все зависит от количества записей и наличия индексов.
Т.е в принципе нужно поиграться с оптимизацией этого запроса

кстати при наличии индексов по CaseID в таблицах CasesDecisions CasesDecisionsValid
ваш вариант из 2 in может быть и быстрее.

Ну и еще можно с EXISTS поиграться

Или еще вариант - сделать сначала курсор из CasesDecisions + CasesDecisionsValid
а потом его INNER JOIN с таблицей
...
Рейтинг: 0 / 0
Подскажите по IN () в SELECT SQL
    #34408317
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибки, похоже оставить два IN() будет нормальным решением, впрочем и по объеденению 2х запросов в один тоже все понятно!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подскажите по IN () в SELECT SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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