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

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

получении значения по дополнительной таблице [D6, FB]


Страницы:   1 2

erika ©   (2005-10-12 10:12:00) 

Здравствуйте!
Возникла  проблема  при  получении значения  по  дополнительной  таблице. Задача  состоит  в   следующем:
1. есть таблица MAPKKR, где KKR - PK; в  таблице есть  поле NOMKKR,  в котором  содержится номер документа , например - 3567
2. есть таблица TABMAP, где IDMTAB – PK, KKR – FK; IDTK для  связи + другие поля
3. есть view INKARTA, где  содержатся  уже  подсчитанные и   сгруппированные  поля по IDTK  и  DOPINF; в последнем  идет  ссылка (сноска) на  поле  NОМKKR,  но  в записи  как 'К'+NOMB, т.е. К3567  
3. нужно создать VIEW,  пишу  запрос:

SELECT mapkkr.kkr, TABMAP.IDMTAB, TABMAP.KKR, INKARTA.ART, INKARTA.NOM, INKARTA.NAME, INKARTA.WIDTH, INKARTA.KOLSKL
FROM mapkkr, TABMAP,INKARTA
WHERE (mapkkr.kkr = tabmap.kkr) and (INKARTA.IDTK = TABMAP.IDTK) and  (INKARTA.dopinf like 'К' mapkkr.nomkkr)

Выдает ошибку
Token unknown - line 3, char 96. mapkkr.

Да, я  и  сама  понимаю, что это  - (INKARTA.dopinf like 'К' mapkkr.nomkkr) - не  правильно. Подскажите, как это  можно  реализовать.
Заранее  благодарна.


erika   (2005-10-12 18:01:00) [1]


> ANB ©   (12.10.05 17:52) [38]

- я замужем, ревновать  нет  смысла


ANB   (2005-10-12 17:52:00) [2]


> erika ©   (12.10.05 17:50) [37]
- жена ревновать будет


erika   (2005-10-12 17:50:00) [3]


> ANB ©   (12.10.05 17:34) [33]

работает УРА-А-А!

Всем большое  спасибо  за  участие.

> ANB ©   (12.10.05 17:36) [34]

Целую!


ANB   (2005-10-12 17:48:00) [4]


> erika ©   (12.10.05 17:44) [35]
- тогда пробуй.


erika   (2005-10-12 17:44:00) [5]


> зачем здесь еще Tkanrul ?

работа с pasport идет только через tkanrul, а  stkan - предоставляет  только общие сведения и работает с tkanrul.
вот!


ANB   (2005-10-12 17:36:00) [6]

Имхо, проблема связи с вьхой с груп байем. Индексы тут не поиспользуешь, план может съехать в сторону и сервак подвисает. Плюс, если не уточнены все связки вполне можно схватить кортезиан, который на одной записи (по параметру) не особо проявляется.


ANB   (2005-10-12 17:34:00) [7]


select   Mapkkr.Kkr
       ,Tabmap.Idmtab
       ,Tabmap.Kkr
       ,Stkan.Art
       ,Stkan.Nom
       ,Stkan.Name
       ,Stkan.Width
       ,sum (Pasport.Prihod) Kolskl
   from Mapkkr, Tabmap, Stkan, Tkanrul, Pasport
  where (Mapkkr.Kkr = Tabmap.Kkr)
    and (Stkan.Idtk = Tabmap.Idtk)
    and (Stkan.Idtk = Tkanrul.Idtk)
    and (Tkanrul.Idrul = Pasport.Idrul)
    and (Pasport.Dopinf = 'Ê' || Mapkkr.Nomkkr)
group by Mapkkr.Kkr, Tabmap.Idmtab, Tabmap.Kkr, Stkan.Art, Stkan.Nom, Stkan.Name, Stkan.Width
- примерно так должен выглядеть запрос без вьюхи. Но не вьеду, зачем здесь еще Tkanrul ?


erika   (2005-10-12 17:32:00) [8]


> ANB ©   (12.10.05 17:25) [30]

думаешь из-за декартова произведения    поэтому?


erika   (2005-10-12 17:28:00) [9]

mapkkr = 4265
tabmap = 4265 *3 (может  чуть меньше)


ANB   (2005-10-12 17:25:00) [10]

А сколько строк в mapkkr, TABMAP ?


erika   (2005-10-12 16:23:00) [11]

я  попробовала  вставить запрос   в IBQuery, на  что  он  мне  ответил - незнаю  я  говорит  такого INKARTA


erika   (2005-10-12 16:09:00) [12]


> ANB ©   (12.10.05 16:06) [26]


у  меня вьюха  пролетает  на ура, да   и  если параметр  задать, то  в  результатом хоть  на К4056, хоть на К25/Э будет  не более 8-ми строк, так  там  6-8  видо  материалов рассматриваются


Sergey13   (2005-10-12 16:09:00) [13]

2 [25] erika ©   (12.10.05 16:04)
Странно все это. При чем тут "update or delete statement"....
Последний мой танец с бубном - B/R нормально проходит?


ANB   (2005-10-12 16:06:00) [14]


> erika ©   (12.10.05 16:04) [25]

Если воткнешь параметр, то запрос у тебя одну строку возвращать будет. 4000 не больно много, но, носом чую - во вьюшке проблема. План съезжает и все клинит.


erika   (2005-10-12 16:04:00) [15]


>Sergey13 ©   (12.10.05 14:53) [23]

все  так  же  аналогично

The cursor identified in the update or delete statement is not positioned on a row. no current record for fetch operation
жуть


> ANB ©   (12.10.05 14:57) [24]

где - то 4000, зато  это вьеха  юзеру неплохую  сводку  дает

я  пробовала  объденить  эти  запросы   в  один, пока  никак, но  походу  дела   это  единственный  способ  без  указания   параметра


ANB   (2005-10-12 14:57:00) [16]


> CREATE VIEW INKARTA(
>    IDTK,
>    DOPINF,
>    ART,
>    NOM,
>    NAME,
>    WIDTH,
>    KOLSKL)
> AS
> SELECT stkan.idtk, PASPORT.DOPINF, stkan.art, stkan.nom,
>  stkan.name, stkan.width, sum(PASPORT.prihod) kolskl
> FROM Stkan, TKANRUL, PASPORT
> where (stkan.idtk = tkanrul.idtk) and (TKANRUL.IDRUL = PASPORT.
> IDRUL) and (PASPORT.dopinf like 'К%')
> group by stkan.idtk, PASPORT.DOPINF, stkan.art, stkan.nom,
>  stkan.name, stkan.width

А вьюха много строк возвращает ? Ибо по такой вьюшке фулл скан пойдет и не факт, что правильно. Сколько строк в каждой из участвующих в связке таблиц ?
Имхо - нехорошо вообще вязаться к вьюхам, а особливо вредно к вьюхам с group by.


Sergey13   (2005-10-12 14:53:00) [17]

SELECT mapkkr.kkr, TABMAP.IDMTAB, TABMAP.KKR, INKARTA.ART, INKARTA.NOM, INKARTA.NAME, INKARTA.WIDTH, INKARTA.KOLSKL
FROM mapkkr, TABMAP,INKARTA
WHERE (mapkkr.kkr = tabmap.kkr) and (INKARTA.IDTK = TABMAP.IDTK) and  ( INKARTA.dopinf = 'К'||mapkkr.nomkkr)

Так попробуй.


erika   (2005-10-12 14:50:00) [18]


> Sergey13 ©   (12.10.05 12:50) [20]

перезагрузилась и  ничего  хорошего не  произошло, можно это кака нибудь  по другому решить, через  другую функцию
можно  конечно через параметр, но неудобно


ANB   (2005-10-12 13:09:00) [19]


> сейчас появилось новое  новое  собщение:  
> canvas does't allow drawing.
- это не ошибка SQL.


Sergey13   (2005-10-12 12:50:00) [20]

2[19] erika ©   (12.10.05 12:43)
> сейчас появилось новое  новое  собщение:  
canvas does't allow drawing

В ИБЭксперте? Может перезагрузиться стОит? 8-)


Страницы:   1 2

Наверх

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