for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Не фоксом единым
  

Re: SQL Server Узнать существует ли хотя бы одна запись
ssa

Сообщений: 12573
Откуда: Москва
Дата: 27.10.16 10:13:20
LED
Подскажите как решить вот такую как бы можно сказать задачу...
...
Ищем наименьшую и наибольшую дату получения товара по его номеру
SELECT Min(dtp),Max(dtp) FROM _nfile WHERE okID=okID1
...
Как составить запрос?
1. НЕТ занчения ISNULL и потому от него невозможно избавиться. ЕСТЬ значение NULL и с нми просто надо научиться работать.
2.
SELECT Min(dtp),Max(dtp), count(*) FROM _nfile WHERE okID=okID1
Всегда вернет одну запись, по значению в третьем поле которой можно судить о наличии записей с таким товаром.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: SQL Server Узнать существует ли хотя бы одна запись
LED

Сообщений: 198
Дата: 27.10.16 10:18:04
SELECT NVL(Min(dtp),0),NVL(Max(dtp),0) FROM _nfile WHERE okID=okID1

Не работает
Пишет Data type mismatch

Решил вот так:

If ISNULL(min_dtp)  
    RETURN  
  endif

Хотелось решить запросом

Спасибо всем кто участвовал в ТЕМЕ
Ratings: 0 negative/0 positive

Re: SQL Server Узнать существует ли хотя бы одна запись
ssa

Сообщений: 12573
Откуда: Москва
Дата: 27.10.16 10:20:40
LED
SELECT NVL(Min(dtp),0),NVL(Max(dtp),0) FROM _nfile WHERE okID=okID1

Не работает
Пишет Data type mismatch
Разумеется. Ибо ДАТА и ЧИСЛО - разные типы. На что и ругань.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive

Re: SQL Server Узнать существует ли хотя бы одна запись
LED

Сообщений: 198
Дата: 27.10.16 10:22:55
SSA
Пока писал не увидел, что Вы уже дали ответ.
Я попробую. Наверно это разумно...
Ratings: 0 negative/0 positive

Re: SQL Server Узнать существует ли хотя бы одна запись
ВладимирС

Сообщений: 1360
Дата: 27.10.16 10:43:41
Аспид
Человек синтаксис MS привел.
В фоксе NVL ...
Честно говоря думал, что вопросы по FoxPro в другом месте, да и заголовок меня смутил... SQL Server...
Извиняюсь...
Если dtp - это дата, то в NVL(Min(dtp),0) вместо 0 надо подставить создание нужной даты...
Ratings: 0 negative/0 positive

Re: SQL Server Узнать существует ли хотя бы одна запись
Igor Korolyov

Сообщений: 33572
Дата: 27.10.16 14:13:46
LED
Решил вот так:
If ISNULL(min_dtp)  
    RETURN  
  endif
Ну для фокса это вполне себе нормальный вариант. По логике работы агрегирующих функций в таком запросе ВСЕГДА будет одна запись. NULL в поле считаемом через min/max будет в двух случаях:
- под внешнее WHERE условие не попало ни одной записи.
- под внешнее условие попали записи, но в них всех соответствующее поле содержит NULL (NULL значения НЕ учитываются агрегирующими функциями).
LED
Хотелось решить запросом
Решить что? Что должен возвращать запрос в каждом из возможных случаев (нет записей по условию, есть запись но там поле даты содержит null, есть записи с заполненными датами)?
Вообще вполне себе можно добавить поле okID в выбираемые поля и в поле группировки, т.е. запрос типа
SELECT okID, Min(dtp) min_date, Max(dtp) max_date FROM _nfile WHERE okID=okID1 GROUP BY okID
Он в случае отсутствия записей с okID=okID1 просто вернёт 0 записей.


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

Re: SQL Server Узнать существует ли хотя бы одна запись
Аспид

Сообщений: 3392
Откуда: Москва
Дата: 27.10.16 14:31:51
ВладимирС
Извиняюсь
Да не за что)))
Все относилось к ТС. Который пользует некропосты. И с подсказками работает... все до букв надо?


------------------
Ratings: 0 negative/0 positive



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

On-line: 16 Simple777 Igor Korolyov  (Гостей: 14)

15.08.2020 22:07:55 exec: 0.09
Mem: 1.261 Mb

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