![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
получении значения по дополнительной таблице [D6, FB]
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]
- примерно так должен выглядеть запрос без вьюхи. Но не вьеду, зачем здесь еще Tkanrul ?
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
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-)