Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

LEFT JOIN. Как Null "преобразовать" в 0? [D6, dBase, FoxPro]


SergP ©   (2004-07-22 11:11:00) 

select podat.name, a.ply+b.ply as zplan ,a.ply as dplan, b.ply as mplan
from podat
left join tablex a on (podat.p=a.p) and (a.vb=30) and (a.r=3)
left join tablex b on (podat.p=b.p) and (b.vb=50) and (b.r=3)
order by podat.p

Мне нужно чтобы в результате было поле zplan в котором сумма значений полей dplan и mplan. Но если в результате запроса не существует какого-то значения dplan или mplan (т.е. оно равно NULL), то и zplan получается равным NULL.
Как сделать чтобы если значение поля равно NULL то чтобы оно учитывалось как 0?

Например в случае такого результата:

zplan   dplan   mplan
  15      10       5
  20      17       3
null       13    null
null     null      90


А нужно чтобы было так:


zplan   dplan   mplan
  15      10       5
  20      17       3
  13      13    null
  90    null      90


Либо так:

zplan   dplan   mplan
  15      10       5
  20      17       3
  13      13       0
  90       0      90


Подскажите как это сделать?

БД Foxpro, ADO, Провайдер VFPOLEDB.1 (Microsoft Ole DB Provider for Visual FoxPro)


Ega23   (2004-07-22 15:08:00) [1]

У меня MSDN локально стоит, на microsoft.com лазить больно дорого  :о)


SergP   (2004-07-22 15:02:00) [2]


>  [5] Ega23 ©   (22.07.04 13:39)


Кроме того для длительных поисков нужно иметь нормального провайдера а не такого как у меня....

Если я за 36 минут смог "выжать" из инета 261 Кб данных то здесь уже не до поисков... :-(((


Ega23   (2004-07-22 13:39:00) [3]

Ну, если честно, то я НИКОГДА не писал для FoxPro, только MS SQL и немножко Interbase.
Но наверняка должна быть функция наподобие IsNull для MSSQL. Вот я её и ввёл, а дольше через See Also.

Уметь самостоятельно искать в MSDN то, что наверняка должно быть, но не знаешь как называется - это, ИМХО, целое искусство.


SergP   (2004-07-22 11:39:00) [4]


> Ega23 ©   (22.07.04 11:18) [3]


Спасибо... В этом тексте я все понял. Но вот в MSDN я навряд ли бы его нашел... Или потратил бы на это кучу времени и трафика...


Ega23   (2004-07-22 11:18:00) [5]

А MSDN на что????

Microsoft Visual FoxPro Language Reference  

NVL( ) Function
Returns a non-null value from two expressions.

NVL(eExpression1, eExpression2)
Return Values
Character, Date, DateTime, Numeric, Currency, Logical, or the null value

Parameters
eExpression1, eExpression2
NVL( ) returns eExpression2 if eExpression1 evaluates to a null value. NVL( ) returns eExpression1 if eExpression1 is not a null value. eExpression1 and eExpression2 may be any data type. NVL( ) returns .NULL. if both eExpression1 and eExpression2 both evaluate to the null value.
Remarks
Use NVL( ) to remove null values from calculations or operations where null values are not supported or are not relevant.

Example
The following example creates a memory variable named glMyNull that contains the null value. NVL( ) is used to return a non-null value from glMyNull and another expression.

STORE .NULL. TO glMyNull  && A memory variable containing the null value
CLEAR
? NVL(.T., glMyNull)  && Displays .T.
? NVL(glMyNull, glMyNull)  && Displays .NULL.
See Also
ISNULL( ) | SET NULL


Соловьев   (2004-07-22 11:16:00) [6]

функция IIF()


Соловьев   (2004-07-22 11:15:00) [7]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_foxhelp/html/lngnvllp_rp.asp


Наверх

Титульная страница Поиск, карта сайта Написать письмо