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

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

select * from mytable where column1 in (select column1, count(*) as cntr from mytable group by 1 having cntr>2)
...
Рейтинг: 0 / 0
29.05.2009, 12:30
    #36015412
Kochegra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL-зарос: строки с одинаковыми значениями в поле
Все, сам разобрался
select * from table t1, (
select column1, count(*) from table group by column1 having count(*)>1) t2
where t1.column1=t2.column1
...
Рейтинг: 0 / 0
29.05.2009, 12:32
    #36015427
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL-зарос: строки с одинаковыми значениями в поле
Код: 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
29.05.2009, 12:39
    #36015447
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL-зарос: строки с одинаковыми значениями в поле
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
29.05.2009, 12:42
    #36015456
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL-зарос: строки с одинаковыми значениями в поле
Погодинв vfp9 примерно так:

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

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
29.05.2009, 19:06
    #36016615
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL-зарос: строки с одинаковыми значениями в поле
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
01.06.2009, 18:24
    #36019796
Kochegra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL-зарос: строки с одинаковыми значениями в поле
ВладимирМ, а нельзя разве как то сразу цепануть запрос? Ведь я его сохранил в проекте как queries под именем query9.qpr (qpx).
...
Рейтинг: 0 / 0
01.06.2009, 19:06
    #36019890
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL-зарос: строки с одинаковыми значениями в поле
KochegraВладимирМ, а нельзя разве как то сразу цепануть запрос? Ведь я его сохранил в проекте как queries под именем query9.qpr (qpx).
Можно, если красота вам не нужна.

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

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

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

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

Если источником данных отчета надо сделать курсор, то обычно этот курсор создают ДО выполнения отчета, либо в методе 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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL-зарос: строки с одинаковыми значениями в поле / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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