|
|
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
Дана таблаца с данными #DATA (SUMMA1 money, FIELD1 varchar(10)) и таблица с условиями #COND (COND varchar(1000)). Значения: Insert #DATA (SUMMA1, FIELD1 ) VALUES (5, '1') Insert #DATA (SUMMA1, FIELD1 ) VALUES (10, '2') Insert #DATA (SUMMA1, FIELD1 ) VALUES (15, '3') Insert #DATA (SUMMA1, FIELD1 ) VALUES (20, '4') INSERT #COND(COND) VALUES (' FIELD1 = ''1'' ') INSERT #COND(COND) VALUES (' FIELD2 = ''3'' ') Необходимо без использования курсоров (и циклов !) получить еще одну таблицу #RESULT, содержащую значения из таблицы #DATA, соответствующие условиям из таблицы #COND(COND varchar(1000), SUMMA1 int ) , т. е.: #RESULT: ( 'FIELD1 = ''1''', 5 ) ( 'FIELD1 = ''3''', 15 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2002, 19:02:58 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
SORRY! Естественно, значения в #COND: INSERT #COND(COND) VALUES (' FIELD1 = ''1'' ') INSERT #COND(COND) VALUES (' FIELD1 = ''3'' ') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2002, 19:24:32 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
Ну во первых в таблице условий у вас есть значение INSERT #COND(COND) VALUES (' FIELD2 = ''3'' ') при этом в таблице #DATA у Вас такого поля нет. Во вторых #DATA и #COND это временные таблицы, и если вы хотите на ходу составлять запросы, то Вам нужно составить строку в которой будет Ваш запрос и исполнить её, при этом откроется новая сессия и временные таблицы созданные в предыдущей сессии видны не будут. Учтя эти неточности получается следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. А теперь третье. Не хочу никого обидеть но это получается удаление гланд экстравагантным методом. Может Вам продумать структуру базы, и отказаться от хранения кусков запросов в самой базе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2002, 20:12:30 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ответ, fima 1. На счет FIELD2 я уже исправился 2. Проблема в том, что условия вводятся пользователем и должны использоваться при формировании отчетов. Приведенный мной пример очень простой (в действительности условие может быть на много сложнее и полей в нем участвует много). Приведенный вами вариант не подходит, а вариант с использованием курсоров работает медленно. 3. На счет "удаление гланд экстравагантным методом" вы погорячились, бывают задачи и по круче этой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2002, 20:27:46 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
Задачи бывают и покруче, но решения бывают разные :)) Я сам репортами не занимался и посоветовать не могу, но такое использование базы немного странно... это я Вам точно говорю... например может Вам такое решение подойдет... http://www.sql.ru/faq/faq_topic.aspx?fid=114 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2002, 20:40:33 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
2 fima на счет видимости.... ;)) Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2002, 21:21:29 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
fima: В настоящее время задача реализована похожим на предложенный вами способом: есть курсор по таблице условий, в котором динамически создается запрос из таблицы с данными. Проблема в том, что это работает МЕДЛЕННО. На счет странного использования базы. Посоветуйте, как по-другому решить задачу: есть отчет, содержащий фиксированное число строк и столбцов (пользователь (имеется в виду организация, в которой устанавливается программа) при настройке шаблона может добавить/удалить строки). Каждый пользователь рассчитывает каждую ячейку отчета по-своему. Для этого на генераторе запросов он формирует запрос (результат - таблица с данными). После этого на основе полей полученного запроса формируются условия на расчет значений каждой ячейки отчета. Если кто-то делал что-нибудь подобное, поделитесь опытом. Буду очень признателен за любые советы и предложения. PS: я умею работать с временными таблицами, поэтому прошу не уделять внимания вопросам видимости и т. п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2002, 09:59:58 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
ну и приведите пример ваших таблиц и условий.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2002, 12:54:28 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
Действительно, таблички и условия обскажите... Кстати насчет видимости... правда видит!!! :)) Вот ведь, меняется SQL Server... 2000 это Вам не 6,5... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 10:12:41 |
|
||
|
Запрос из таблицы, условие к которому находится в другой таблице БЕЗ КУРСОРОВ!!!
|
|||
|---|---|---|---|
|
#18+
если у Вас есть таблица с условиями, то что мешает собирать условия в одну переменную, а затем выполнять exec? Код: plaintext 1. 2. 3. 4. 5. 6. 7. только есть одно НО в таком подходе... условия очень быстро наберут размер в 4000 символов, а затем начнутся танцы с бубном... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2002, 10:26:48 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3384&tid=1819106]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 310ms |

| 0 / 0 |
