Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите с having  [new]
anvp
Member

Откуда:
Сообщений: 3
Есть таблица #Табличка1:
link1 inc
12
12
12
12
13
13
13


далее выполняются такие команды
select link1 into #Табличка2 from №Табличка1 group by link1, INC
delete from #Табличка2 where link1 in (select T.link1 from #Табличка1 T group by link1 having count(*) < 6)

в хранимой процедуре такой код приводит к тому что в #Табличке 2 не остается записей вообще.
В QA - остается 2 записи...
Мне кажется результат QA правильный, но тогда почему в хранимой процедуре получается такой результат?
27 июн 09, 20:02    [7351551]     Ответить | Цитировать Сообщить модератору
 Re: помогите с having  [new]
Glamorama
Member

Откуда:
Сообщений: 152
2 варианта :
1) Вы приводите неверный скрипт (из текущего следует, что табличка чиститься полностью в обоих случаях);
2) содержимое таблички несколько отличается от приведенного.
27 июн 09, 20:11    [7351553]     Ответить | Цитировать Сообщить модератору
 Re: помогите с having  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
Я вот тоже ошибки не вижу. Предоставьте воспроизводимый пример: скрипты создания, запросы.
27 июн 09, 20:31    [7351570]     Ответить | Цитировать Сообщить модератору
 Re: помогите с having  [new]
anvp
Member

Откуда:
Сообщений: 3
скрипт точно этот - copy рулит :-)
по поводу удаления - мне кажется не должно ничего удаляться, ибо строк с одинаковым link1 = 7 - больше 6.

про данные - процесс создания #таблички1 довольно трудоемкий, там несколько хранимых процедур отрабатывает, данные несколько отличаются:
1. в обоих столбцах лежат данные типа int, тока значения другие, несколько больше.
2. #табличка1 содержит более двух полей, их чего-то порядка 10, практически все значения в полях равны, одно поле (сумма) точно различается для всех записей.
НО я считаю что это не имеет значения, так как в приведенном примере операции и сравнения идут по полям inc и link1 и только.

Данные из хранимой процедуры забирал при помощи
select * into ПостояннаяТаблица from #табличка2
после первой и второй команды (в разные таблицы конечно)
после первой команды в #табличке2 - 2 записи (что логично)
после второй команды в #табличке2 - ни одной записи

давно не работал с SQL2000, поискал настройки - вроде ничего на having и count так кардинально не влияет.... Озадачен.
27 июн 09, 20:58    [7351594]     Ответить | Цитировать Сообщить модератору
 Re: помогите с having  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
anvp,

Вас просили скрипт создания таблиц, наполнения их тестовыми данными.
27 июн 09, 21:04    [7351604]     Ответить | Цитировать Сообщить модератору
 Re: помогите с having  [new]
anvp
Member

Откуда:
Сообщений: 3
Не могу :-(
во первых уже дома - и тут нет доступа к коду.
во вторых #табличка1 заполняется из клиента (доступ к исходникам клиента нет) - но там просто формируется 7 insert'ов. Поле link1 вычисляется при сохранении в постоянную таблицу - значение поля у всех одинаковое, так как поле link1 это идентификатор родительской строки (м.. в общем связь один ко многим, идентификатор этого самого "одного" и есть link1).
Поле inc как было заполнено на клиенте, так больше не меняется.
Вторая временная табличка формируется прям в приведенном коде и там же заполняется :-)
Собственно вот - если настаиваете на скриптах - то только завтра :-(
27 июн 09, 21:19    [7351615]     Ответить | Цитировать Сообщить модератору
 Re: помогите с having  [new]
Senya_L
Member

Откуда: Москва
Сообщений: 5381
anvp,

А доступ к компьютеру и SQL-серверу есть?
27 июн 09, 21:41    [7351639]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить