Страница 2 из 2

И что

Добавлено: 14 фев 2005, 15:19
zanuda
Ок, "...запрос всех полей НЕ ДЕЛАЕТСЯ, если в view указан список полей..." А что насчет необходимой мне сортировки?

Re: И что

Добавлено: 14 фев 2005, 16:53
WiRuc
.Create view testView
as
select
MBPMOVE.DMOVE(fieldname=dateF),
MBPIN.SUMMA(fieldname=StoimF),
KATMBP.NAME(fieldname=MBPName),
MBPIN.KOLDOC(fieldname=kolF),
KATMBP.NNUMBER(fieldname=MBPKod),
KATMOL.NAME (fieldname=MOLFROM)
from katmbp,mbpin,mbpmove,katmol
WHERE
(( KATMBP.NREC == MBPIN.CMBP AND
(word(3) <> MBPIN.INSTATE) AND
MBPIN.CSOPR == MBPMOVE.NREC AND
MBPMOVE.CMOLF == KATMOL.NREC ))
ORDER BY KATMBP.NNUMBER;

Re: И что

Добавлено: 14 фев 2005, 16:59
zanuda
MBPIN.INSTATE - это что?

Re: И что

Добавлено: 14 фев 2005, 17:29
WiRuc
Тип прихода
Приход ведь можент быть и со склада, в этом случае INSTATE=3 и MBPIN.CSOPR ссылается не на MBPMOVE, а на KATSOPR.

Re: И что

Добавлено: 15 фев 2005, 09:11
Goblin
Действительно ...
Поглядел ASDK, сказанное актуально было только для Pervasive, ввиду особенностей его API ...

А с MS SQL малость обосрамился :)

Re: И что

Добавлено: 15 фев 2005, 09:21
zanuda
Ну до этого я бы точно сам не дошел :) только путем перебора полей в галактике.
Прочту, запишу, выучу.

А вообще, эти таблицы для подробного реестра вводов в эксплуатацию?

Re: И что

Добавлено: 16 фев 2005, 09:20
zanuda
Всем большое спасибо

Re: И что

Добавлено: 16 фев 2005, 09:26
Maverick
Ээээ, ребята не ссорьтесь )))
поясняю )))
использование в селекте * или Table.* параллельно для прикладухи, для платформы - глубоко не параллельно )))
И москвичи, читающие курсы тоже в чем-то правы... просто они не договаривают, что "галактике пофиг - выбирается все или только определенные поля" верно ТОЛЬКО для Pervacive ))), MS SQL и Oracle, как уважающие себя платформы и вообще говоря - нормальные СУБД САМИ сужают запрос до того перечня, который указан в самом LOT. На 100% не уверен, но похоже это делает прокладка...

Re: И что

Добавлено: 16 фев 2005, 11:33
WiRuc
А кто сориться то:)
Нормальные СУБД не могут сами сужать запрос, они выполняют точно то, что им посылают. То, что для прикладухи все глубоко параллельно, это верно. На то она и платформо-независимая. А вот преобразованием в запросы занимается прокладка СУБД (ms70drv.dll для MSSQL). А как занимается, закачаешься, расстрелял бы разработчиков.
Кстати, интересный факт. Если вообще не указывать в VIEW поля, т.е. написать CREATE VIEW FROM ..., то компилятор сам на основе дальнейшего текста программы (интерфейса) определяет список необходимых полей в запросе.

глупые вопросы

Добавлено: 17 фев 2005, 11:17
zanuda
ну вы развернули тему.
А вот скажите, данные из запроса в SQL Enterprise Menager и в Галактике должны же совпадать при одинаковом запросе (те же связки и т.д.) к таблицам?
Почему в галактике данные множатся (доходит до 9 раз)?
И третье, что предпочтительней (лучше)? Писать GetNext.ИмяView или же
ИмяView.getNext ИмяТаблицы ???

Re: глупые вопросы

Добавлено: 17 фев 2005, 11:24
zanuda
Ой, т.е.
Имяview.getnext
или
ИмяView.getNext ИмяТаблицы ?

Re: глупые вопросы

Добавлено: 18 фев 2005, 11:12
edward_K
все зависит от ситуевины.
в формах vvv.getfirst table не приводит автоматически к позиционированию в дочерних таблицах.
в тоже время vvv.getfirst ; приводит к вычислению всех полей, описанных в select
поэтому когда связь по всем дочерним таблам
1 к 1, то могу посоветовать юзать vvv.getfirst ; ну и затем vvv.getnext, в противном случае по vvv.getnext ,будете получать почти одинаковые наборы в буфере - что не всегда удобно. :)

Re: глупые вопросы

Добавлено: 18 фев 2005, 14:08
edd
Вот из-за одинаковых наборов я и спросил. Спасиб за объяснение

Re: глупые вопросы

Добавлено: 21 фев 2005, 11:55
stray
и как же избежать получения ентих
одинаковых наборов в буфере - что всегда не удобно и путает все карты ???