:: Visual Foxpro, Foxpro for DOS
Торможу
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Уважаемые форумчане !
Задача в том, что надо выбрать только единички (при их наличии) или если нет ни одной единички вывести все нули.
Необходимо с помощью одного SELECTа сделать выборку и получить соответствующие значения 1,1 или 0,0,0,0,0
Смотрите прикрепленную картинку
[attachment 27039 Image5.jpg]
Торможу, возможно у кого-то есть простое решение ... Спасибо.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Торможу
pasha_usue

Сообщений: 3649
Откуда: Е-бург
Дата регистрации: 06.10.2006
Без подзапроса никак.

USE IN SELECT("CurTst")
CREATE CURSOR CurTst (Pole I)
FOR m.i = 1 TO 5
INSERT INTO CurTst VALUES (0)
NEXT m.i
*!* INSERT INTO CurTst VALUES (1)
*!* INSERT INTO CurTst VALUES (1)
SELECT ;
Pole ;
FROM CurTst ;
WHERE Pole = 1 OR NOT EXIST (SELECT 1 FROM CurTst Sub WHERE Sub.Pole = 1) ;
INTO CURSOR CurResult NOFILTER
Ratings: 0 negative/0 positive
Re: Торможу
LUCIAN

Сообщений: 343
Откуда: Лида Беларусь
Дата регистрации: 25.03.2008
SELECT 0
CREATE CURSOR ctest (pole1 i(4))
*!* INSERT INTO ctest VALUES (1)
*!* INSERT INTO ctest VALUES (1)
*!* INSERT INTO ctest VALUES (1)
*!* INSERT INTO ctest VALUES (1)
INSERT INTO ctest VALUES (0)
INSERT INTO ctest VALUES (0)
INSERT INTO ctest VALUES (0)
INSERT INTO ctest VALUES (0)
INSERT INTO ctest VALUES (0)
SELECT pole1 FROM ctest WHERE pole1=1 ;
UNION all;
select pole1 FROM ctest,(select SUM(pole1) it FROM ctest ) cit WHERE cit.it = 0



Исправлено 1 раз(а). Последнее : LUCIAN, 16.02.17 14:28
Ratings: 0 negative/0 positive
Re: Торможу
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Павел,LUCIAN спасибо.


------------------
Незнание делает жизнь такой интересной.




Исправлено 1 раз(а). Последнее : dimuhametov, 16.02.17 14:26
Ratings: 0 negative/0 positive
Re: Торможу
leonid

Сообщений: 3204
Откуда: Рига
Дата регистрации: 03.02.2006
До кучи

SELECT 0
CREATE CURSOR ctest (pole1 i(4))
INSERT INTO ctest VALUES (0)
INSERT INTO ctest VALUES (0)
INSERT INTO ctest VALUES (1)
INSERT INTO ctest VALUES (1)
*!* INSERT INTO ctest VALUES (0)
*!* INSERT INTO ctest VALUES (0)
*!* INSERT INTO ctest VALUES (0)
*!* INSERT INTO ctest VALUES (0)
*!* INSERT INTO ctest VALUES (0)
SELECT pole1 FROM ctest WHERE pole1 = (select MAX(pole1) FROM ctest)
Ratings: 0 negative/0 positive
Re: Торможу
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Это если там буквально лишь 0 и 1, а не "упрощение" реальной задачи, где какая-то "пустота" и "многообразная непустота" соревнуются


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Торможу
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
leonid
До кучи
SELECT 0
CREATE CURSOR ctest (pole1 i(4))
INSERT INTO ctest VALUES (0)
INSERT INTO ctest VALUES (0)
INSERT INTO ctest VALUES (1)
INSERT INTO ctest VALUES (1)
*!* INSERT INTO ctest VALUES (0)
*!* INSERT INTO ctest VALUES (0)
*!* INSERT INTO ctest VALUES (0)
*!* INSERT INTO ctest VALUES (0)
*!* INSERT INTO ctest VALUES (0)
SELECT pole1 FROM ctest WHERE pole1 = (select MAX(pole1) FROM ctest)
Спасибо за красивое решение.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Торможу
dimuhametov
Автор

Сообщений: 1562
Откуда: Костанай
Дата регистрации: 01.11.2008
Igor Korolyov
Это если там буквально лишь 0 и 1, а не "упрощение" реальной задачи, где какая-то "пустота" и "многообразная непустота" соревнуются
только нули и только единички. Значений NULL нет.


------------------
Незнание делает жизнь такой интересной.
Ratings: 0 negative/0 positive
Re: Торможу
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
А почему тогда не .T. и .F.? Или это не фоксовая dbf и там нет логического типа?
Просто если сама таблица позволяет ввести в поле число 5 или там 7 кроме 0/1 то они туда ОБЯЗАТЕЛЬНО попадут рано или поздно И логика работы ПО рухнет... Так что в таких случаях констрейн запрещающий всё кроме 0 и 1 в поле просто таки необходим


------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 (Гостей: 21)

© 2000-2024 Fox Club 
Яндекс.Метрика