Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конкатенация в запросе к базе DBF 
:(
    Опции темы
timondrik
Дата 2.7.2014, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.7.2014

Репутация: нет
Всего: нет



Доброго времени суток! Прошу у спецов помощи в решении проблемы возникшей в процессе выверки баз данных.
Имеются 2 dbf файла. Программист до меня сволочь из даты взятия сделал целочисленное поле только под год (о чем он думал понятия не имею), то есть передо мной только год взятия, а месяц и день соответственно я не знаю. Каждый конец отчетного месяца эта база резервится в архив (тупо в папку по месяцам раскладывается). Передо мной очень часто стоит задача искать людей взятых за определенный месяц, из за чего постоянно приходится брать один месяц и сверять его с другим перебором (так как инфа там с нарастающим итогом), результатом чего получается dbf в котором люди взятые именно за нужный мне месяц или период месяцев. Перебор достаточно долгий (более 20 т. записей от 10 до 15 мин.) и это очень не удобно. Я решил сделать эту задачу как и в MSSQL:

SQL
SELECT * FROM tbl2.dbf WHERE fio + bdate not in (SELECT fio + bdate FROM tbl1.dbf) 


Так задача выполняется за секунды.

А вот теперь сама проблема. Конкатенация типа СТРОКА + СТРОКА выполняется успешно, но у меня поле типа Date, в следствии чего запрос выдает ошибку "Operator/operand type mismatch". Почему он не может строку с датой соединить? Других вариантов построения запроса я не вижу, чтобы было быстрее или хотя бы не хуже данного варианта. Очень надеюсь на помощь более оснащенных в этом вопросе людей.

Это сообщение отредактировал(а) timondrik - 2.7.2014, 09:23
PM MAIL   Вверх
timondrik
Дата 2.7.2014, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 2.7.2014

Репутация: нет
Всего: нет



Стоит попросить помощи и ответ найдется сам. Решил проблему так:

Код

SELECT * FROM tbl2.dbf WHERE fio + cast(bdate AS varchar(10)) not in (SELECT fio + cast(bdate AS varchar(10)) FROM tbl1.dbf)


Перевел строку перед конкатенацией. Всем спасибо за внимание smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.