Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select вопрос / 13 сообщений из 13, страница 1 из 1
29.01.2010, 08:31
    #36437670
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
SELECT IIF(.T.,0,MAX(zakaz_ar.ag)) AS ag FROM zakaz_ar
Почему выдаёт ошибку?
И как сделать, чтоб не было ошибки....
...
Рейтинг: 0 / 0
29.01.2010, 08:58
    #36437708
Select вопрос
q1w1e1,

выполнил запрос на своей таблице. Селект честно отдал 0, как и ожидалось. Никакой ошибки не было, что я делаю не так?
...
Рейтинг: 0 / 0
29.01.2010, 09:08
    #36437728
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
SELECT MAX(IIF(.T.,0,zakaz_ar.ag)) AS ag FROM zakaz_ar
...
Рейтинг: 0 / 0
29.01.2010, 09:08
    #36437729
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
Извиняюсь, не совсем корректно задал вопрос, дело в том, что в таблице zakaz_ar, нет поля ag, под этим псевдонимом выступает другая таблица, с другими полями, поэтому и хотелось бы знать, если в этой таблице нет каких-то определённых полей то 0, иначе суммирование по эти полям...
...
Рейтинг: 0 / 0
29.01.2010, 09:13
    #36437735
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
q1w1e1,

вместо "иначе суммирование по эти полям", хотел написать "иначе MAX по эти полям", правда без разницы, всё равно агрегативные функции...
...
Рейтинг: 0 / 0
29.01.2010, 09:27
    #36437757
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
Пятница? Трудная неделя?

local lcField
FOR i=1 TO FCOUNT('tMyTable')
IF LOWER(FIELD(i))=='ag'
lcField=.T.
exit
ENDIF
ENDFOR
if lcField
SELECT MAX(zakaz_ar.ag) AS ag FROM tMyTable
endif
...
Рейтинг: 0 / 0
29.01.2010, 09:31
    #36437766
GoshaS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
LOCAL  llField
FOR i= 1  TO FCOUNT('tMyTable')
	IF LOWER(FIELD(i))=='ag' 
		llField=.T.
	EXIT 
	ENDIF 
ENDFOR 
if llField
	SELECT MAX(zakaz_ar.ag) AS ag FROM tMyTable
ENDIF 
...
Рейтинг: 0 / 0
29.01.2010, 10:00
    #36437812
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
Да я всё это понимаю... :(, и в этом коде
if llField
SELECT MAX(zakaz_ar.ag) AS ag FROM tMyTable
ENDIF
Надо поставить "ELSE" , и потом если что-то исправить, то править надо уже два SELECT(а), вероятность ошибки возрастает, хорошо если они рядом, а если разнесены ужасно много строчным кодом...да вы сами всё понимаете, поэтому и хотелось бы всю эту конструкцию иметь в одном SELECt(е), а не делать проверку на наличие поля, а затем уже от этого значения, или так или так, выполнять SELECT, поэтому и подумал воспользоваться IIF(ом)
...
Рейтинг: 0 / 0
29.01.2010, 10:01
    #36437817
quxix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
С вашего позволения рехтану немного ..?
и если я правильно понял топикастера :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
FOR i= 1  TO FCOUNT('MyTable')
	IF FIELD(i)=='AG' 
             SELECT MAX(ag) ag FROM <MyTable>
	ELSE
             SELECT MAX(cast( 0  as <Тип поля AG>)) ag FROM <MyTable>	
	ENDIF 
ENDFOR
...
Рейтинг: 0 / 0
29.01.2010, 10:10
    #36437831
Select вопрос
q1w1e1,

Код: plaintext
SELECT IIF(TYPE('mytable.checked_field')#'N', 0 ,MAX(mytable.checked_field)) AS checked_field FROM mytable
...
Рейтинг: 0 / 0
29.01.2010, 10:51
    #36437946
q1w1e1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
Шестипалов,

поля checked_field точно нет в таблице mytable, и не выдаёт ошибки?
Конструкция
IF FIELD(i)=='AG'
SELECT MAX(ag) ag FROM <MyTable>
ELSE
SELECT MAX(cast(0 as <Тип поля AG>)) ag FROM <MyTable>
ENDIF
тоже не подходит, надо IIF() в одном SELECT
...
Рейтинг: 0 / 0
29.01.2010, 10:52
    #36437948
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Select вопрос
констатация: шибсдец.

ну до кучи порезвитесь над функцией fsize
...
Рейтинг: 0 / 0
29.01.2010, 10:55
    #36437960
Select вопрос
q1w1e1,

если поля checked_field в таблице нет — выдаст 0, если есть — максимальное значение.

Проверял на реальной таблице.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Select вопрос / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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