Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как в SELECTe сделать исключение по полю? / 20 сообщений из 20, страница 1 из 1
23.10.2006, 10:46
    #34073170
Igrok4
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
Есть таблица: Np N(3), Kom N(7)
Нужен селект который в курсор в поле Sum_Np записал бы количество строк с неповторяющимися значениями, а в Sum_Kom сумму всех значений поля Kom.
Спасибо!
...
Рейтинг: 0 / 0
23.10.2006, 11:01
    #34073213
Как в SELECTe сделать исключение по полю?
Igrok4Есть таблица: Np N(3), Kom N(7)
Нужен селект который в курсор в поле Sum_Np записал бы количество строк с неповторяющимися значениями, а в Sum_Kom сумму всех значений поля Kom.
Спасибо!
ИМХО, одним запросом здесь не обойтись, т.к. в SUM_NP - количество НЕПОВТОРЯЮЩИХСЯ значений, а в SUM_KOM - сумма ВСЕХ значений (в т.ч. и повторяющихся!!!).
Скорее всего здесь будет что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
select count(*) as cnt from (select distinct NP from table1) ;
into cursor query1 nofilter
select sum(KOM) as sm_kom from table1 ;
into cursor query2 nofilter
insert into result (SUM_NP,SUM_KOM) values (query1.cnt,query2.sm_kom)
...
Рейтинг: 0 / 0
23.10.2006, 11:16
    #34073273
Igrok4
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
Спасибо, но два простых запроса это не очень хорошо. Может можно обойтись одним? Или на крайний случай тогда объединением...
...
Рейтинг: 0 / 0
23.10.2006, 11:28
    #34073322
Как в SELECTe сделать исключение по полю?
Igrok4Спасибо, но два простых запроса это не очень хорошо. Может можно обойтись одним? Или на крайний случай тогда объединением...
Не знаю, проканает ли, но можно примерно так:
Код: plaintext
1.
2.
3.
4.
select count(*) as sum_np, sum(km) as sum_kom ;
from (select np,sum(kom) as km from table1 ;
        group by np) ;
into cursor query
...
Рейтинг: 0 / 0
23.10.2006, 14:10
    #34073995
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
Igrok4Есть таблица: Np N(3), Kom N(7)
Нужен селект который в курсор в поле Sum_Np записал бы количество строк с неповторяющимися значениями, а в Sum_Kom сумму всех значений поля Kom.
Спасибо!

Код: plaintext
SELECT COUNT(DISTINCT Np), SUM(Kom) FROM MyTab

В первом поле будет количество уникальных значений по полю Np.
...
Рейтинг: 0 / 0
23.10.2006, 14:17
    #34074035
Igrok4
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
Спасибо! Я почему то думал, что DISTINCT на одно поле не распространяется.
...
Рейтинг: 0 / 0
23.10.2006, 14:30
    #34074088
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
то ВладимирМ
Код: plaintext
COUNT(DISTINCT Np)
к сожалению такой манс в фоксе не пройдет, это не MS SQL
...
Рейтинг: 0 / 0
23.10.2006, 14:35
    #34074106
PaulWist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
-=AlexiS=-то ВладимирМ
Код: plaintext
COUNT(DISTINCT Np)
к сожалению такой манс в фоксе не пройдет, это не MS SQL

а попробовать

Код: plaintext
1.
2.
3.
4.
CREATE CURSOR test (f1 i)
INSERT INTO test VALUES ( 1 )
INSERT INTO test VALUES ( 1 )

SELECT count(distinct f1), f1 FROM test GROUP BY f1
...
Рейтинг: 0 / 0
23.10.2006, 15:06
    #34074225
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
to PaulWist
Вай - опять "обздался" ну никак не привыкну к 9 фоксу.
Просто работаю с MSSQL - запросы в фоксе мало пишу. Вот поэтому как втемяшилось еще с 6 , так и помню.
Кстати в хелпе про новый синтаксис ничего нет (посмотрю еще в "Что нового").
...
Рейтинг: 0 / 0
23.10.2006, 17:27
    #34074847
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
-=AlexiS=-to PaulWist
Вай - опять "обздался" ну никак не привыкну к 9 фоксу.
Просто работаю с MSSQL - запросы в фоксе мало пишу. Вот поэтому как втемяшилось еще с 6 , так и помню.
Кстати в хелпе про новый синтаксис ничего нет (посмотрю еще в "Что нового").
Такой синтаксис будет корректным и в VFP6SP5. Проверено. Работает. Насчет более ранних - не скажу. Но, вероятно, будет работать и в FPD. Т.е. это старая примочка. Просто про нее мало кто знает и в HELP она действительно не описана.
...
Рейтинг: 0 / 0
23.10.2006, 18:42
    #34075072
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
спасибо за науку - и ведь что интересно в MSSQL - пользуюсь - а в фоксе - глянул в хелп и так и не попробовал

как говориться век живи - так дураком и помрешь

или вот еще родился "ахфоризм" : "читать хелп не только полезно , но и вредно "
...
Рейтинг: 0 / 0
24.10.2006, 01:00
    #34075531
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
COUNT(DISTINCT x) в FPD не было.
...
Рейтинг: 0 / 0
24.10.2006, 06:52
    #34075625
Как в SELECTe сделать исключение по полю?
UrriCOUNT(DISTINCT x) в FPD не было.
Э, дарагой! Зачем неправду говоришь, да!
PaulWist
а попробовать
Код: plaintext
1.
2.
3.
4.
5.
CREATE CURSOR test (f1 i)
INSERT INTO test VALUES ( 1 )
INSERT INTO test VALUES ( 1 )

SELECT count(distinct f1), f1 FROM test GROUP BY f1

Я вот поробовал. И удивился - работает!!! (FPD 2.6)
...
Рейтинг: 0 / 0
10.11.2006, 02:04
    #34117830
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
Код: plaintext
CREATE CURSOR test (f1 i)
"i" в FPD тоже не было.
...
Рейтинг: 0 / 0
10.11.2006, 07:13
    #34117944
Как в SELECTe сделать исключение по полю?
Urri
Код: plaintext
CREATE CURSOR test (f1 i)
"i" в FPD тоже не было.
А вот здесь я с тобой соглашусь
Но
Код: plaintext
select count(distinct f1),f1 from test group by f1 
в FPD работает 100%! Проверено электроникой!
...
Рейтинг: 0 / 0
10.11.2006, 12:45
    #34119153
Igrok4
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
Да-а-а, как переменчива жизнь...
Теперь стоит задача делать исключение по двум полям. А это уже не проходит :(
...
Рейтинг: 0 / 0
10.11.2006, 13:03
    #34119243
Как в SELECTe сделать исключение по полю?
Igrok4Да-а-а, как переменчива жизнь...
Теперь стоит задача делать исключение по двум полям. А это уже не проходит :(
Потом надо будет по трем и более... Этим юзерам палец в рот не клади... :)
Делай через подзапрос (в качестве источника данных для запроса) в запросе, либо через два запроса... Потом дешевле выйдет сопровождать, чем один Супер-Пупер-Мега запрос со сложными условиями...
...
Рейтинг: 0 / 0
11.11.2006, 02:26
    #34120940
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
Оппа! Вот так история одного заблуждения!
Это я значит 12 лет всякие хитрые программные способы замены того, что в ФПД на самом деле и так есть, изобретал?! Ой-е-ей!
Сейчас уже и не припомню, с чего я решил, что этой конструкции нет, но наверняка не на пустом месте, тестировал, но наверное как-то не так. Моя уверенность была настолько непоколебима, что я даже проверять не полез, когда Станислав С попытался меня вразумить... ;-)
...
Рейтинг: 0 / 0
11.11.2006, 02:30
    #34120942
hkus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
Urri, он просто крут :) Не убивай веру человека в себя
...
Рейтинг: 0 / 0
11.11.2006, 15:04
    #34121219
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в SELECTe сделать исключение по полю?
UrriОппа! Вот так история одного заблуждения!
Я тоже придумывал... А потом появился нормально переведенный хелп.
А потом... если кто помнит FPD, к руководствам прилагалась "Викторина SQL".
Это было что-то... хотя вышеописанного там не было.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как в SELECTe сделать исключение по полю? / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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