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