Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.015 c
5-1112868857
Helene
2005-04-07 14:14
2005.11.27
Компонент "Счетчик электроэнергии"


2-1131271653
netboy
2005-11-06 13:07
2005.11.27
Работа с RichEdit


3-1129265006
kvi
2005-10-14 08:43
2005.11.27
ограничение на число полей в таблицах paradox


14-1131453530
Priest
2005-11-08 15:38
2005.11.27
Подскажите интернет магазин


4-1127737319
Red Stranger
2005-09-26 16:21
2005.11.27
Как получить список всех контролов дочернего окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский