powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помочь составить SQL запрос
17 сообщений из 17, страница 1 из 1
Помочь составить SQL запрос
    #37357324
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть таблица
pole_1pole_2112212314331
надо получить
pole_1pole_21112
т.е. у кого одинаковое pole_1, но разное pole_2
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357405
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1,

Фокса под рукой нет, отработает ли такая конструкция?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select * 
from t
where pole_1 in
    (select t1.pole_1
     from t t1
     group by t1.pole_1
     having (count distinct t1.pole_2) >  1 
    );
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357407
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1,

SELECT DISTINCT pole_1, pole_2 FROM <table> WHERE pole_1 = 1 INTO CURSOR c1
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357442
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

нет, где-то ошибка, пытаюсь разобраться
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357453
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorNG,

хотелось бы без условия WHERE pole_1 = 1, т.к. это пример, и мне надо найти значения этого pole_1
Спасибо
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357462
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AmKad,

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

Найти такие записи в таблице, для которых существует хотя бы еще одна запись в этой же таблицы с тем же самым значением поля pole_1, но другим значением поля pole_2

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
* Исходные данные для примера
Create Cursor myTab (pole_1 i, pole_2 i)
Insert into MyTab values ( 1 ,  1 )
Insert into MyTab values ( 2 ,  2 )
Insert into MyTab values ( 1 ,  2 )
Insert into MyTab values ( 3 ,  1 )
Insert into MyTab values ( 4 ,  3 )
Insert into MyTab values ( 3 ,  1 )

* Собственно запрос
select * ;
from MyTab tab1 ;
where exists(select  1  from MyTab tab2 ;
                 where tab2.pole_1 = tab1.pole_1 ;
                    and tab2.pole_2 <> tab1.pole_2)
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357549
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

Спасибо, но что-то это выше моего понимания..:-), мне не понятно... выражение в начале должно выполняться в скобках, но в скобках уже присутствует переменная "заскобочного" выражения (tab1.pole_1), вот это и сложно для понимания...
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357561
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. выполнить по шагам (т.е. то что в скобках выполнить, понять..потом подгрузить следущий шаг и т.д.) не получится...
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357569
IgorNG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1,

Если условие WHERE убрать, то будет результат:
pole_1 pole_2
1 1
1 2
2 2
3 1
4 3

т.е. неповторяющиеся значения
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357590
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще так сделать:
Код: plaintext
1.
2.
3.
select distinct A.*;
	from MyTab A join MyTab B on A.pole_1 = B.pole_1;
	where A.pole_2 != B.pole_2
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37357884
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1ВладимирМ,

Спасибо, но что-то это выше моего понимания..:-), мне не понятно... выражение в начале должно выполняться в скобках, но в скобках уже присутствует переменная "заскобочного" выражения (tab1.pole_1), вот это и сложно для понимания...
Да чего там сложного-то

Директива WHERE выполняется для каждой записи таблицы-источника. В данном случае для копии таблицы MyTab, которую обозначили как tab1. Другими словами, для каждой записи tab1 выполняется подзапрос, который указан после exists(). Если этот запрос нашел хотя бы одну запись, то текущая запись tab1 должна попасть в выборку. Если не нашел, то - не должна

Ну, для простоты понимания, можно представить, что есть 2 совершенно одинаковые таблицы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  tab1                            tab2
 ---------------------         ---------------------
 | pole_1  | pole_2  |         | pole_1  | pole_2  | 
 ---------------------         ---------------------
 |    1    |    1    |         |    1    |    1    | 
 |    2    |    2    |         |    2    |    2    | 
 |    1    |    2    |         |    1    |    2    | 
 |    3    |    1    |         |    3    |    1    | 
 |    4    |    3    |         |    4    |    3    | 
 |    3    |    1    |         |    3    |    1    | 

- Берем первую запись первой таблицы и просматриваем ВСЕ записи второй таблицы на предмет выполнения условия в exist(). Если нашли, то запись из первой таблицы должна попасть в выборку.
- Берем вторую запись первой таблицы и просматриваем ВСЕ записи второй таблицы на предмет выполнения условия в exist(). Если нашли, то запись из первой таблицы должна попасть в выборку.
- ... Повторяем проверку для каждой записи из первой таблицы, сравнивая ее со ВСЕМИ записями второй таблицы
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37358000
Фотография Megabrain
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я не понял, а order by в FoxPro уже отменили?
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37358057
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabrainЧто-то я не понял, а order by в FoxPro уже отменили?
Это ты к чему спросил? Выше про сортировки никто не спрашивал
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37358081
Фотография Megabrain
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TMegabrainЧто-то я не понял, а order by в FoxPro уже отменили?
Это ты к чему спросил? Выше про сортировки никто не спрашивал

Не ну как вориант если файл нибальшой отсартировать и на глаз пасмотреть.
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37358634
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое всем спасибо за помощь и разъяснения в составлении запроса...:-)
...
Рейтинг: 0 / 0
Помочь составить SQL запрос
    #37358635
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ,

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


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