Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

получении значения по дополнительной таблице   Найти похожие ветки 

 
erika ©   (2005-10-12 10:12) [0]

Здравствуйте!
Возникла  проблема  при  получении значения  по  дополнительной  таблице. Задача  состоит  в   следующем:
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) - не  правильно. Подскажите, как это  можно  реализовать.
Заранее  благодарна.


 
Johnmen ©   (2005-10-12 10:22) [1]

like "К"||mapkkr.nomkkr


 
Sergey13 ©   (2005-10-12 10:29) [2]

2erika ©   (12.10.05 10:12)
>в последнем  идет  ссылка (сноска) на  поле  NОМKKR,  но  в записи  как "К"+NOMB, т.е. К3567  
Какая же это ссылка? Это просто так кажется, ИМХО. Почему бы не привести к одинаковому виду и поставить на поле нормальный форинкей? Да и не на номер наверное надо а на ПК.


 
erika ©   (2005-10-12 10:48) [3]

когда  пишу

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)


выдает  ошибку:

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


 
ANB ©   (2005-10-12 10:52) [4]


> erika ©   (12.10.05 10:48) [3]

Странная ошибка. Кстати, а зачем like ? "=" - вполне достаточно.


 
Sergey13 ©   (2005-10-12 10:53) [5]

2[3] erika ©   (12.10.05 10:48)
mapkkr.nomkkr - какого типа?


 
erika ©   (2005-10-12 10:56) [6]


> Sergey13 ©   (12.10.05 10:29) [2]
> 2erika ©   (12.10.05 10:12)
> >в последнем  идет  ссылка (сноска) на  поле  NОМKKR,  но
>  в записи  как "К"+NOMB, т.е. К3567  
> Какая же это ссылка?


раньше  это  действительно была просто ссыла типа  использовано  было по  К3567,  а  теперь  вот  понадобилось  для  отчета. "К" нужна  была для  объяснения   что за   документ был


>  Почему бы не привести к одинаковому виду и поставить на поле нормальный форинкей?


для  того что  бы  теперь  привести  это к  одинаковому   виду надо  пол базы  сломать и  клиента  хорошо  переделывать


> Да и не на номер наверное надо а на ПК.

связь идет (INKARTA.IDTK = TABMAP.IDTK),  а  определение по карте имено  по дополнительному  полю

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


 
erika ©   (2005-10-12 10:57) [7]


> Sergey13 ©   (12.10.05 10:53) [5]

типа  string


 
Val ©   (2005-10-12 11:03) [8]

что выдает вам эту ошибку?


 
Sergey13 ©   (2005-10-12 11:08) [9]

2[7] erika ©   (12.10.05 10:57)
Что за компоненты? Модифицирующие запросы (на update,delete) есть? Они переделаны?


 
erika ©   (2005-10-12 11:35) [10]

изначально  пробую отладить в IBExpert, он  и  выдает  ошибку.
затем планирую  использовать компоненту IBDataSet


 
Val ©   (2005-10-12 11:45) [11]

как-то не верится, чтоб ибэксперт это выдавал, не понимаю, к чему там стейтментс, можно ошибку целиком?


 
Sergey13 ©   (2005-10-12 11:47) [12]

2[10] erika ©   (12.10.05 11:35)
А код создания вьюхи INKARTA можно глянуть?


 
erika ©   (2005-10-12 11:51) [13]


> Sergey13 ©   (12.10.05 11:47) [12]


легко

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


> Val ©   (12.10.05 11:45) [11]


В  окне сообщению  об ошибке  больше  ничего  не указано...


 
Val ©   (2005-10-12 12:01) [14]

выполните этот запрос через isql и приведите ошибку, пожалуйста. Я не нашел первой части приведенной ошибки в ошибках IB.


 
Sergey13 ©   (2005-10-12 12:03) [15]

2[13] erika ©   (12.10.05 11:51)
Странно. У меня нечто похожее отрабатывает нормально.


 
erika ©   (2005-10-12 12:32) [16]


> Sergey13 ©   (12.10.05 12:03) [15]


INKArta  у  меня  тоже   идет замечательно
проблема   в  создании нового view


> Val ©   (12.10.05 12:01) [14]


isql вообще   виснет  и  ничего не  пишет

//
при  этом если я  в  запросе  указываю конкретный  документ  без like, то  все  хорошо 5-6 мсек

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 = ("К4046"))


 
Sergey13 ©   (2005-10-12 12:35) [17]

2[16] erika ©   (12.10.05 12:32)
>проблема   в  создании нового view
А просто запрос без создания вьюхи работает?

>при  этом если я  в  запросе  указываю конкретный  документ  без like, то  все  хорошо 5-6 мсек
Тебе еще в [4] ANB © сказал что тут Like и не нужен вроде. Не так?


 
Val ©   (2005-10-12 12:38) [18]

может он не виснет а долго выполняется, например из-за декартова произведения?


 
erika ©   (2005-10-12 12:43) [19]


> erika ©   (12.10.05 12:32) [16]


уже  без like,  а  результата  тотже




> при  этом если я  в  запросе  указываю конкретный  документ
>  без like, то  все  хорошо 5-6 мсек


> (INKARTA.dopinf = ("К4046"))



сейчас появилось новое  новое  собщение:  
canvas does"t allow drawing.


> А просто запрос без создания вьюхи работает?


я и пытаюсь сначала  запрос выполнить,  а  потом  это загнать во  View


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

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

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


 
ANB ©   (2005-10-12 13:09) [21]


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


 
erika ©   (2005-10-12 14:50) [22]


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

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


 
Sergey13 ©   (2005-10-12 14:53) [23]

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)

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


 
ANB ©   (2005-10-12 14:57) [24]


> 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.


 
erika ©   (2005-10-12 16:04) [25]


>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 16:06) [26]


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

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


 
Sergey13 ©   (2005-10-12 16:09) [27]

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


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


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


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


 
erika ©   (2005-10-12 16:23) [29]

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


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

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


 
erika ©   (2005-10-12 17:28) [31]

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


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


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

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


 
ANB ©   (2005-10-12 17:34) [33]


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 ?


 
ANB ©   (2005-10-12 17:36) [34]

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


 
erika ©   (2005-10-12 17:44) [35]


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

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


 
ANB ©   (2005-10-12 17:48) [36]


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


 
erika ©   (2005-10-12 17:50) [37]


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

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

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

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

Целую!


 
ANB ©   (2005-10-12 17:52) [38]


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


 
erika ©   (2005-10-12 18:01) [39]


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

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



Страницы: 1 вся ветка

Текущий архив: 2005.11.27;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.035 c
14-1131007741
DiamondShark
2005-11-03 11:49
2005.11.27
Есть ли утилита?


2-1131540149
max999
2005-11-09 15:42
2005.11.27
Вопрос на тему "иконка в трее" :)


4-1124137966
ronyn
2005-08-16 00:32
2005.11.27
Перезапуск приложения


14-1130970062
Kerk
2005-11-03 01:21
2005.11.27
Яндекс :)


2-1131801001
KostR
2005-11-12 16:10
2005.11.27
Можно ли програмно сравнить две даты?