![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с запросом [D7, Paradox]
petvv © (2006-11-09 07:28:00)Доброго времени суток мастера !
Подмогните с запросом:
select Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr, Sum(TotOsnov.Cur) Den, iif((Sum(TotOsnov.Cur)<>0),Fuel.Price,0)from TotOsnov, Fuel, Osnovan
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
and
Fuel.Num=TotOsnov.Product
and
Osnovan.Num=TotOsnov.Osnovanye
group by Marka, Name, Price
Пытаюсь сделать, чтобы если сумма <> 0 подставлял цену, а если = 0 тогда ставил цену = 0. В чём грабли?
ЮЮ (2006-11-09 09:29:00) [1]
> Всем респект, надо было вот так:
Нет, надо было как в [2]. ИМХО,
1) не следует, в Where смешивать условия объединения таблиц и условия отбора записей. Тем более, что первое горазжо шире по возможностям.
2) следует при написании sql запроса применять форматирование, как и и при написании кода.
petvv (2006-11-09 08:48:00) [2]Всем респект, надо было вот так:
select Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr,
Sum(TotOsnov.Cur) Den, Fuel.Price from TotOsnov, Fuel, Osnovan
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
and
Fuel.Num=TotOsnov.Product
and
Osnovan.Num=TotOsnov.Osnovanye
group by Marka, Name, Price
having Sum(TotOsnov.Cur)<>0
union
select Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr,
Sum(TotOsnov.Cur) Den, 0 from TotOsnov, Fuel, Osnovan
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
and
Fuel.Num=TotOsnov.Product
and
Osnovan.Num=TotOsnov.Osnovanye
group by Marka, Name, Price
having Sum(TotOsnov.Cur)=0
Тема закрыта!
ЮЮ (2006-11-09 07:54:00) [3]Чтбы не показывались нули можно и на клиенте сделать.
Но если хочется всё-таки в запросе, то так:
select
Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr, Sum(TotOsnov.Cur) Den, Fuel.Price
from
TotOsnov
join Fuel on Fuel.Num=TotOsnov.Product
join Osnovan Fuel.Num=TotOsnov.Product
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
group by Marka, Name, Price
having Sum(TotOsnov.Cur) <> 0
union
select
Fuel.Marka, Osnovan.Name, Sum(TotOsnov.Lit) Litr, Sum(TotOsnov.Cur) Den, 0
from
TotOsnov
join Fuel on Fuel.Num=TotOsnov.Product
join Osnovan Fuel.Num=TotOsnov.Product
where ShiftTo>=:QDBeg and ShiftTo<=:QDEnd
group by Marka, Name, Price
having Sum(TotOsnov.Cur) = 0
ЮЮ (2006-11-09 07:41:00) [4]грабли в синтаксисе. Нет никаких iif в LocalSQL.
Ну и что 0 вместо Fuel.Price так существенен, если Sum(TotOsnov.Cur) = 0