Форум: "Базы";
Текущий архив: 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]
- примерно так должен выглядеть запрос без вьюхи. Но не вьеду, зачем здесь еще 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
← →
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.014 c