powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL-зарос: строки с одинаковыми значениями в поле
15 сообщений из 15, страница 1 из 1
SQL-зарос: строки с одинаковыми значениями в поле
    #36015350
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Такая задачка.
Есть например табличка (поля символьные)
-----------------------
id | column1 | column2
-----------------------
1 101 текст1
2 102 текст2
3 102 текст3
4 101 текст4
5 100 текст5

Нужен запрос который выведет только записи с одинаковыми значениями (по полю column1), т.е. тоже самое но в результате не должно быть записи с id=5.
Что то никак не могу сообразить.
Заранее спасибо
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015411
Погодин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в vfp9 примерно так:

select * from mytable where column1 in (select column1, count(*) as cntr from mytable group by 1 having cntr>2)
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015412
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, сам разобрался
select * from table t1, (
select column1, count(*) from table group by column1 having count(*)>1) t2
where t1.column1=t2.column1
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015427
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Create Cursor tt (id c( 1 ), column1 c( 3 ), column2 c( 10 ))
Insert into tt values('1', '101', 'текст1')
Insert into tt values('2', '102', 'текст2')
Insert into tt values('3', '102', 'текст3')
Insert into tt values('4', '101', 'текст4')
Insert into tt values('5', '100', 'текст5')

Select t1.* ;
from tt t1 ;
inner join (;
		Select column1 ;
			from tt ;
			group by column1 ;
			having Count(*)> 1 ) t2 on t1.column1=t2.column1

Return 


...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015447
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KochegraДобрый день!
Такая задачка.
Есть например табличка (поля символьные)
-----------------------
id | column1 | column2
-----------------------
1 101 текст1
2 102 текст2
3 102 текст3
4 101 текст4
5 100 текст5

Нужен запрос который выведет только записи с одинаковыми значениями (по полю column1), т.е. тоже самое но в результате не должно быть записи с id=5.
Что то никак не могу сообразить.
Заранее спасибо
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
USE IN SELECT('t1')

CREATE CURSOR t1 (id I, column1 C( 3 ), column2 C( 6 ))
INSERT INTO t1 VALUES ( 1 ,'101','текст1')
INSERT INTO t1 VALUES ( 2 ,'102','текст2')
INSERT INTO t1 VALUES ( 3 ,'102','текст3')
INSERT INTO t1 VALUES ( 4 ,'101','текст4')
INSERT INTO t1 VALUES ( 5 ,'100','текст5')

SELECT * FROM t1 ;
WHERE column1 IN (SELECT column1 FROM t1 GROUP BY column1 HAVING COUNT(*) >  1 )
С уважением, Алексей
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015456
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Погодинв vfp9 примерно так:

select * from mytable where column1 in (select column1, count(*) as cntr from mytable group by 1 having cntr>2)
Не пойдет. Во внутреннем SELECT-те должна быть только ОДНА колонка, если он используется в условии IN
С уважением, Алексей
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015490
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем откликнувшимся!
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015943
Tohan_ORA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kochegra,
можно ещё и так :-)
Код: plaintext
1.
SELECT * FROM t1 ;
WHERE id NOT in (SELECT MIN(id) FROM t1 GROUP BY column1 having COUNT(*) =  1 )
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015984
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, не могу теперь определить данные для отчета. Запрос создан и работает. Не подскажете как для отчета определить нужный запрос, чтобы данные из запроса брались.
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36015995
Погодин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, ошибся, вот так работает:

select * from mytable where column1 in (SELECT column1 FROM;
(select column1, count(*) as cntr from mytable b group by 1 having cntr>1) a)
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36016615
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KochegraБлин, не могу теперь определить данные для отчета. Запрос создан и работает. Не подскажете как для отчета определить нужный запрос, чтобы данные из запроса брались.
Надо сохранить результат запроса в курсоре, а затем использовать этот курсор как источник данных для отчета.

Вот еще один варинат решения той же задачи

Код: plaintext
1.
2.
3.
select * ;
from MyTab tab1 ;
INTO CURSOR curResult NOFILTER ;
where exists(select 'x' from MyTab where MyTab.column1 = tab1.column1 and MyTab.id <> tab1.id)

Вот получившийся курсор curResult и используйте как источник отчета.
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36019796
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ, а нельзя разве как то сразу цепануть запрос? Ведь я его сохранил в проекте как queries под именем query9.qpr (qpx).
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36019890
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KochegraВладимирМ, а нельзя разве как то сразу цепануть запрос? Ведь я его сохранил в проекте как queries под именем query9.qpr (qpx).
Можно, если красота вам не нужна.

Открываете Query на редактирование в дизайнер. Затем выбираете пункт меню

Query \ Query Destination \ нажать кнопку "Screen", установить переключатель в группе "Secondary Output" в положение "To printer", снять в группе "Options" птичку "Pause beteen screens".

Только в таком виде Query будет всегда посылаться на печать, даже если вы этого не хотите.
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36020888
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ, Не подскажете где этот курсор прописывать, в каком методе? Как привязать к отчету? Никак чтото разобраться не могу. Создаю отчет, но не могу найти где вставлять источник данных. Статические таблицы спокойно вставляются. С другими источниками, чтото туговато.
...
Рейтинг: 0 / 0
SQL-зарос: строки с одинаковыми значениями в поле
    #36021198
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да не привязывается курсор к отчету. Никак.

"Фишка" в том, что отчету все-равно что является источником данных. Таблица или курсор. Просто на момент выполнения отчета эта таблица-источник должна быть открыта.

Если источником данных отчета надо сделать курсор, то обычно этот курсор создают ДО выполнения отчета, либо в методе DataEnvironment.BeforOpenTable.

Кроме того, в собственно DataEnvironment отчета вообще ничего не должно быть. Никаких таблиц.

Все объекты отчета, которые ссылаются на поля, должны иметь в качестве алиаса значение алиаса курсора или вообще ничего. Просто имя поля.

В результате имеем

Код: plaintext
1.
2.
SELECT * FROM bases!accounts INTO CURSOR curReport NOFILTER
REPORT FORM rep1.frx

Все поля отчета, в данном случае, должны иметь алиас curReport

Если же вы хотите осуществить именно "привязку к отчету", т.е. добавить объект в DataEnvironment отчета, то вам надо делать не объект Query, а объект Local View или класс CursorAdapter.

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


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