powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / трабл с запросом на SQL Anywhere 5
24 сообщений из 24, страница 1 из 1
трабл с запросом на SQL Anywhere 5
    #36520853
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Не знаю уже что за проблема. Суть в след.:
Есть запрос №1
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
	*
FROM
	Opers
WHERE
	Year(date_oper) =  2010  and Month(date_oper) =  2 ;
и запрос №2:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
	*
FROM
	Opers
WHERE
	Year(date_oper) =  2010  and Month(date_oper) =  2  and d_subc =  92638 ;
Запрос №2 возвращает три строки, что есть правильно.
Запрос же №1, возвращает множество строк, но увы те три строки, которые вернул запрос №2, в это множество не входят.
В чем может быть проблема?
Пытался решить вопрос таким образом:
экспортнул таблицу в Access, проверил количество записей. И там, и там они совпадают.
Но вот запрос №2 при выполнении его в Access уже не возвращает те три строчки.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521388
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Удивительно...
Попробовал запрос №3:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
	*
FROM
	Opers
WHERE
	date_oper >= date('20100201') and date_oper <= date('20100228')
и сверил количество возвращаемых строк с запросом №1.
Результат
Запрос №1 - кол-во 42522
Запрос №2 - кол-во 48026

Вообще ничего не понимаю...
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521517
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
and date_oper < date('20100301')

День теряете
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521537
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl,

увы и ах, но нет... уже пробывал данный вариант, тот же результат.
И почему теряю?
Код: plaintext
and date_oper <= date('20100228')
На сколько я осведомлен, в феврале 2010 года 28 дней.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521558
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь,
автор
Запрос №2 - кол-во 48026

Запрос №3 - кол-во 48026
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521572
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLastЗапрос №2 возвращает три строки, что есть правильно.
Запрос же №1, возвращает множество строк, но увы те три строки, которые вернул запрос №2, в это множество не входят.
В чем может быть проблема?В индексах. Лечить пересозданием индексов.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521625
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLastSiemargl,

увы и ах, но нет... уже пробывал данный вариант, тот же результат.
И почему теряю?
Код: plaintext
and date_oper <= date('20100228')
На сколько я осведомлен, в феврале 2010 года 28 дней.

date_oper <= date('20100228') все равно что
date_oper <= date('20100228:00:00'), а не 23:59.9999, как вы бы хотели =)
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521650
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl,
готов Вас огорчить, date_oper типа Date, а не DateTime! И это большая разница.
И запрос вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
	*
FROM
	Opers
WHERE
	date_oper >= date('20100225') and date_oper <= date('20100227');
отлично справляется с поставленной ему задачей, а именно, возвращает все операции за период 25-27 число!
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521958
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLastSiemargl,
готов Вас огорчить, date_oper типа Date, а не DateTime! И это большая разница.
И запрос вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
	*
FROM
	Opers
WHERE
	date_oper >= date('20100225') and date_oper <= date('20100227');
отлично справляется с поставленной ему задачей, а именно, возвращает все операции за период 25-27 число!

Я рад, что ошибся, и у Вас совершенно другие проблемы )))
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36521975
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и надо возвращаться к совету Совы. В ту же тему - проверки индексов (и базы) небольшая история:

Добыл я из архива программу Delphi+Sybase Anywhere 5.5 - в виртуалке развернул, скомпилил, работает.

От нечего делать проверил базу, поставил Sybase 6.03 trial, провел из центали апгрейд. Программа виснет на открытии примерно 10й таблицы.

Проверил в централи - БД целая. Почесал за ухом и закинул эксперимент в дальний угол. Но мысль осталась - с чего бы - или проверка врет или что то еще?

В программе Delphi - BDE через ODBC родными компонентами - все тривиально.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36522095
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пересоздание индексов не помогло.
Завтра буду пробывать удалять строки и вновь добавлять. Не знаю, к чему все приведет.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36522312
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLastПересоздание индексов не помогло.
Завтра буду пробывать удалять строки и вновь добавлять. Не знаю, к чему все приведет.
Может стоит еще посмотреть план запроса ? Что конкретно для извлечения записей использует оптимизатор. Еще неплохо бы конечно выложить скрипт создания таблицы и индексов, сложно гадать на кофейной гуще.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36522479
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ASCRUS,
План для запроса №1
Код: plaintext
1.
2.
Estimated  12205  rows in query (I/O estimate  696058 )
PLAN> opers (seq)

План для запроса №3
Код: plaintext
1.
2.
Estimated  16973  rows in query (I/O estimate  17480 )
PLAN> opers (kred)

kred - это индекс по трем полям date_oper, kredit, k_subc.

Что такое seq? Я так полагаю sequence, то есть перебор идет последовательно.

Увы скрипт таблицы и индексов не могу выложить, так как в ASA 5 его не выгрузить, хотя я могу ошибаться. А индексы создаються через Централ.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36523556
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ужос просто какой-то...
в базе есть строка
Код: plaintext
1.
2.
id	 oper_id   date_oper	debet	d_subc	kredit	k_subc	summa
 5118258    171156      04 . 03 . 2010 	 96 . 02 	 71074 	 89 . 12 	 74185 	 200 , 00 
Пробую два запроса
№4
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
	*
FROM
	Opers
WHERE
	id =  5118258 ;
№5
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
	*
FROM
	Opers
WHERE
	oper_id =  171156 ;
№4 выводит данную строку, а №5 ничего не вывод.
Люди, помогите...
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36524064
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLast
№4 выводит данную строку, а №5 ничего не вывод.
Люди, помогите...Насколько ты уверен что oper_id это число а не char или varchar?
Попробуй:
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT
	*
FROM
	Opers
WHERE
	convert(numeric( 6 ), oper_id) =  171156 ;
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36524153
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,
как бы я не совсем пока потерянный человек и уверен что oper_id и не char и не varchar.
В потверждении своих слов, вот вам скрин.
И еще, при экспорте в MSSQL2008 данные строки вовсе исчезают.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36524349
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверьте файл бд, может там страницы данных или побились.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36524600
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLastWhite Owl,
как бы я не совсем пока потерянный человек и уверен что oper_id и не char и не varchar.
Значит потеряна база данных.
Если drop index - create index на все индексы данной таблицы не решили проблему, то остается только перестраивать всю базу. Выгружать все таблицы во внешние файлы, и загружать их в свежесозданную базу.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36524649
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,
дак вся проблема в том, что при экспорте данных из таблицы, эти строки не переносяться...
Их даже удалить не получается.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36524689
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLast пишет:

> дак вся проблема в том, что при экспорте данных из таблицы, эти строки
> не переносяться...
> Их даже удалить не получается.

Скорее всего, БД испорчена.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36524906
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLast,

1) Среди возможного набора возвращаемых данных этим запросом нужная запись есть?
Код: plaintext
1.
2.
3.
SELECT *
FROM Opers as a,Opers as b
WHERE b.id =  5118258  and a.oper_id = b.oper_id
2) oper_id имеет ли индекс, внешний ключ?
3) Раз данные идут по запросу (ту запись как-то да увидели?!), значит выгрузить можно. Не unload'ом, так output'ом. Делать все ручками из ISQL, никаких "мастеров/волшебников/помощников". Вероятность побитости базы, которая не чувствуется dbvalidate очень и очень низка. Последний обязательно что-нибудь вякнул.
4) Во всех запросах не увидел ни одного count(*). Estimeted rows, ясное дело, возвращает примерную статистику. Как оценивали количество возвращаемых строк?
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36525298
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем большое спасибо.
Проблему решил след. образом:
1. Создал таблицу с идентичной структурой.
2. Построчно скопировал данные в новую (построчно в связи с тем, что запрос на выборку всех данных выводил не все строчки, а обращаясь по id все строки возвращались).
3. Создал индексы в новой таблице.
4. Заменил старую таблицу новой.
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36525456
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NoLast,

Есть шанс, что повреждена не одна таблица.

Я видел только два состояния базы SA 5.5 - Validate OK и крит ошибка при открытии БД, потому сомневаюсь что dbvalidate работает достаточно детально =(
...
Рейтинг: 0 / 0
трабл с запросом на SQL Anywhere 5
    #36525503
NoLast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl,
ну пока проблем не появилось.
Если база действительно нарушена и есть проблемы с другими таблицами, то это можно увидеть только со временем.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / трабл с запросом на SQL Anywhere 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]