29.05.2007, 12:16 | #21 |
Axapta
|
|
|
29.05.2007, 12:18 | #22 |
Программатор
|
|
|
29.05.2007, 12:48 | #23 |
Участник
|
И получаем жесткий подвисон (это - про нижеприведенное сообщение )
Уж лучше тогда вариант с count X++: while select table1 //ItemId group by itemId { select count(RecId) from table2 group by itemId/*, feature - это лишнее*/ where table2.itemid == table1.itemid; if (table2.recId == #NeededAmountOfFeautres) { //save value } } Последний раз редактировалось kashperuk; 29.05.2007 в 13:11. |
|
29.05.2007, 12:48 | #24 |
Участник
|
Сори. Последний раз фигню написал. На автобус спешил (похавать).
Есть три тиблицы как я понял. Первая номенклатуры. Вторая характеристики и третья связь характеристик с номенклатурами. X++: While select table1//номенклатуры { While select table2//характеристики { select table3 // связь where table3.itemId=ItemId && table3 && table3.feature=table2.id //т.е. А.В. С и т.д. по очереди if (table2.id = C && table3) //последней и характеристика есть { , } if (! table3) { //как только первой нет выходим и берём следующую номенклатуру для проверки break; } } } Последний раз редактировалось miklenew; 29.05.2007 в 14:52. |
|
29.05.2007, 12:58 | #25 |
Участник
|
[QUOTE=miklenew;139595]
Есть три тиблицы как я понял. /QUOTE] Две таблицы: Таблица товаров и таблица характеристик. Хотя это ничего не меняет. |
|
29.05.2007, 13:08 | #26 |
Участник
|
Цитата:
Сообщение от kashperuk
И получаем жесткий подвисон (это - про нижеприведенное сообщение )
Уж лучше тогда вариант с count X++: while select table1 //ItemId group by itemId { select count(RecId) from table2 group by itemId, feature where table2.itemid == table1.itemid; if (table2.recId == #NeededAmountOfFeautres) { //save value } } Не могу понять почему: есть какое то ограничение на размер запроса? (длина строки получается больше 9000 символов) или что-то другое? |
|
29.05.2007, 13:22 | #27 |
Участник
|
|
|
29.05.2007, 13:42 | #28 |
Участник
|
|
|
29.05.2007, 14:11 | #29 |
Участник
|
|
|
29.05.2007, 14:33 | #30 |
Участник
|
Не понимаю. Вот две таблицы. 1-я номенклатур. 2-я связь. А третья таблица характеристики. Я так понимаю Feture - это id характеристики.
|
|
29.05.2007, 14:33 | #31 |
Участник
|
|
|
29.05.2007, 14:40 | #32 |
Участник
|
В даном случае достаточно только id характеристики. Действительно еще есть справочник характеристик, но для данного запроса в нем нет необходимости.
|
|
29.05.2007, 14:41 | #33 |
Участник
|
|
|
29.05.2007, 14:51 | #34 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: leshy (1). |
29.05.2007, 14:52 | #35 |
Участник
|
жара однако, 9000 символов это больше 8 Кб, приношу свои извенения, ашыпся. Похоже ограничение на длинну запроса, как раз и является причиной ошибки.
|
|
29.05.2007, 15:30 | #36 |
Участник
|
|
|
30.05.2007, 12:39 | #37 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: leshy (1). |
30.05.2007, 12:49 | #38 |
Участник
|
Можно еще сделать запрос с максимальным количеством джойнов, а оставшиеся условия проверить уже внутри цикла. или результат первого запроса сохранить во временную таблицу, потом сделать запрос для оставшихся условий уже с временной таблицей.
|
|
|
За это сообщение автора поблагодарили: leshy (1). |
30.05.2007, 20:47 | #39 |
Участник
|
Пока что я вижу два решения:
1) через Connection. 2) Через временную таблицу (еще можно через Connection во временную таблицу ) Что удобнее, буду выяснять на примерах. |
|
31.05.2007, 14:13 | #40 |
1C
|
Чистый T-SQL (только что проверил работоспособность):
X++: SELECT id, descr, SUM(f1) AS f1, SUM(f2) AS f2, SUM(f3) AS f3 FROM (SELECT t1.id , t1.descr , CASE WHEN t2.f = 1 THEN t2.f ELSE NULL END AS f1 , CASE WHEN t2.f = 2 THEN t2.f ELSE NULL END AS f2 , CASE WHEN t2.f = 3 THEN t2.f ELSE NULL END AS f3 FROM Table1 AS t1 INNER JOIN Table2 AS t2 ON t1.id = t2.id) AS derivedtbl_1 GROUP BY id, descr HAVING (SUM(f1) IS NOT NULL) AND (SUM(f2) IS NOT NULL) AND (SUM(f3) IS NOT NULL) Последний раз редактировалось Dolter; 31.05.2007 в 14:16. |
|
Теги |
ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Помогите с запросом | 8 | |||
Помогите с запросом | 4 | |||
помогите с запросом | 4 | |||
Помогите с запросом.. | 2 | |||
Помогите с SQL запросом | 8 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|