Переключение на Главную Страницу Страницы: 1 ... 8 9 [10] 11 12 ... 20 ОтправитьПечать
Очень популярная тема (более 25 ответов) 1sqlite (число прочтений - 64577 )
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #135 - 28. Октября 2007 :: 18:14
Печать  
Да, по артикулу, который текстовый нормально.

При преобразовании в текст тоже нормально

Код
Выбрать все
Select *

from Номенклатура  as СпрНом

where СпрНом.МинОстаток='	    2.000' 

  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #136 - 28. Октября 2007 :: 18:34
Печать  
Добавил МинОстаток в Контрагенты, все СпрКонтр.МинОстаток =0, отбора нет.

Код
Выбрать все
Select *

from Номенклатура  as СпрНом

left join Контрагенты as СпрКонтр on СпрНом.МинОстаток=СпрКонтр.МинОстаток

where  СпрНом.МинОстаток='	    2.000'
 


получилось непустое соединение, хотя СпрКонтр.МинОстаток все 0.
т.е. подсоединился 'Торговый дом "Новый"                              '
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #137 - 28. Октября 2007 :: 19:04
Печать  
Когда есть соответствие в Join верхний запрос  - нормально.

Такой код нормально
Код
Выбрать все
Select 1 as всего, SUM(СпрНом.МинОстаток)

from Номенклатура  as СпрНом

where  СпрНом.МинОстаток='	    2.000' or СпрНом.МинОстаток='	   10.000'

group by всего 



с добавлением left join пустой

Код
Выбрать все
Select 1 as всего, SUM(СпрНом.МинОстаток)

from Номенклатура  as СпрНом
left join Контрагенты as СпрКонтр on СпрКонтр.МинОстаток=СпрНом.МинОстаток

where  СпрНом.МинОстаток='	    2.000' or СпрНом.МинОстаток='	   10.000' 



inner join(есть один контрагент с МинОстаток='          2.000') нормально
Код
Выбрать все
Select 1 as всего, SUM(СпрНом.МинОстаток)

from Номенклатура  as СпрНом
inner join Контрагенты as СпрКонтр on СпрКонтр.МинОстаток=СпрНом.МинОстаток

where  СпрНом.МинОстаток='	    2.000' or СпрНом.МинОстаток='	   10.000' 



такое впечатление что некорректно отрабатываются пустые значения
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #138 - 28. Октября 2007 :: 19:40
Печать  
Тестирование индексного выражения при соединении таблиц
В спр Номенклатура есть реквизит Артикул с отбором
(а в справочниках Контр и номенклатура совпадающий артикул)

Код
Выбрать все
Select *

from Контрагенты as Спрконтр

left join Номенклатура as СпрНом on СпрНом.Артикул=Спрконтр.Артикул

where  Спрконтр.code=' 1828' 



судя по времени выполнения был найден и использован индекс
UPPER(sp3677)+UPPER(descr)
Это супер!!! Улыбка Это то что не умеет делать Fox.

Ошибки.
1. При отсутствии соответсвия подставляется первый элемент из Номенклатуры
2. Если СпрНом.Артикул="" тогда соединяется вся таблица Номенклатуры
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #139 - 28. Октября 2007 :: 21:11
Печать  
Здесь  программа -
http://sqliteadmin.orbmu2k.de/
SQLite Administrator - средство администрирования и редактор SQL-запросов в SQLite

Возможно ли обеспечить взаимодействие?
(ну например в цикле по метаданным скопировать в базу справочники, можно без строк, или можно лучше?)
  

main.jpg ( 86 KB | Загрузки )
main.jpg
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #140 - 29. Октября 2007 :: 10:29
Печать  
kiruha писал(а) 28. Октября 2007 :: 18:34:
Добавил МинОстаток в Контрагенты, все СпрКонтр.МинОстаток =0, отбора нет.

Код
Выбрать все
Select *

from Номенклатура  as СпрНом

left join Контрагенты as СпрКонтр on СпрНом.МинОстаток=СпрКонтр.МинОстаток

where  СпрНом.МинОстаток='	    2.000'
 


получилось непустое соединение, хотя СпрКонтр.МинОстаток все 0.
т.е. подсоединился 'Торговый дом "Новый"                              '

надо явно преобразовывать типы (  пока не разобрался как )
у меня пока получилось так правильно работает
Код
Выбрать все
where  abs(СпрНом.МинОстаток ) = 2
 


со знаком > abs() тоже правильно работает

  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: 1sqlite
Ответ #141 - 29. Октября 2007 :: 10:47
Печать  
Код
Выбрать все
Select *

from Номенклатура  as СпрНом

left join Контрагенты as СпрКонтр on СпрНом.МинОстаток=СпрКонтр.МинОстаток

where  CAST(СпрНом.МинОстаток  as INTEGER)  = 2 



Дает ту же ошибку - присоединяет первого контрагента, в то время как нет СпрКонтр.МинОстаток=2

то же и с abs

И вообще - условие where только для наглядности, тестируется соединение
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #142 - 29. Октября 2007 :: 11:13
Печать  
kiruha писал(а) 29. Октября 2007 :: 10:47:
Код
Выбрать все
Select *

from Номенклатура  as СпрНом

left join Контрагенты as СпрКонтр on СпрНом.МинОстаток=СпрКонтр.МинОстаток

where  CAST(СпрНом.МинОстаток  as INTEGER)  = 2 



Дает ту же ошибку - присоединяет первого контрагента, в то время как нет СпрКонтр.МинОстаток=2

то же и с abs

И вообще - условие where только для наглядности, тестируется соединение

У меня аналогич запрос
Код
Выбрать все
Select * from Касса  as СпрКасса
left join Клиенты as СпрКлиенты on СпрКасса.Рассылка=СпрКлиенты.Рассылка
where  CAST(СпрКасса.Рассылка  as INTEGER)  = 1
 


Правильно отрабатывает
когда ставим условие
Код
Выбрать все
where  CAST(СпрКасса.Рассылка  as INTEGER)  = 2 


получаем 0 строк

(kiruha) А может дело в следущем остаток у тебя все таки real а сравниванить real на равенство проблематично для sqlite ?
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #143 - 29. Октября 2007 :: 11:40
Печать  
смотрим стартовый топик.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #144 - 29. Октября 2007 :: 12:01
Печать  
kiruha писал(а) 28. Октября 2007 :: 19:40:
судя по времени выполнения был найден и использован индекс
UPPER(sp3677)+UPPER(descr)

Не надо смотреть по времени.
Поставь флаг "План запроса", и смотри, что написано для команд VFilter в колонке p3.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: 1sqlite
Ответ #145 - 29. Октября 2007 :: 12:10
Печать  
orefkov

Саша, под эту штуку надо использовать юнит-тестирование.
Только я сам сделать сейчас не могу, только идею могу высказать. Печаль
  

De quelle planète es-tu?
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #146 - 29. Октября 2007 :: 12:22
Печать  
kms писал(а) 29. Октября 2007 :: 12:10:
orefkov

Саша, под эту штуку надо использовать юнит-тестирование.
Только я сам сделать сейчас не могу, только идею могу высказать. Печаль

И я того же мнения.
И начал подвижки в эту сторону.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: 1sqlite
Ответ #147 - 29. Октября 2007 :: 12:47
Печать  
orefkov писал(а) 29. Октября 2007 :: 12:22:
kms писал(а) 29. Октября 2007 :: 12:10:
orefkov

Саша, под эту штуку надо использовать юнит-тестирование.
Только я сам сделать сейчас не могу, только идею могу высказать. Печаль

И я того же мнения.
И начал подвижки в эту сторону.

+1
А каким образом видишь схему юнит-тестирования?
Поделишься?
Лично я предлагаю/рекомендую привязаться к конфигурации юнит-тестирования 1С++ Улыбка
Там уже есть большая куча различных тестов для классов 1С++, хорошо отработанная базовая часть юнит-тестов и т.д.
Тем более, что
1) некоторую часть ОлеДБ мы уже тестили в этой конфе
2) надеюсь, что тесты для этой ВК наверняка довольно просто будет использовать как для тестирования парсера прямых запросов в 1С++, так и для тестирования прямых запросов скуля и дбф.

Типа чего два раза писать Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #148 - 29. Октября 2007 :: 14:29
Печать  
Смотрим стартовый топик.

Вроде как на моих тестах пока все ок.
Поэтому добавил журнал, документы, регистры.

Ща планирую - надо сделать нормальный upper, lower, LIKE в SQLite, сейчас он русского не разумеет.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: 1sqlite
Ответ #149 - 29. Октября 2007 :: 14:33
Печать  
artbear писал(а) 29. Октября 2007 :: 12:47:
orefkov писал(а) 29. Октября 2007 :: 12:22:
kms писал(а) 29. Октября 2007 :: 12:10:
orefkov

Саша, под эту штуку надо использовать юнит-тестирование.
Только я сам сделать сейчас не могу, только идею могу высказать. Печаль

И я того же мнения.
И начал подвижки в эту сторону.

+1
А каким образом видишь схему юнит-тестирования?
Поделишься?
Лично я предлагаю/рекомендую привязаться к конфигурации юнит-тестирования 1С++ Улыбка
Там уже есть большая куча различных тестов для классов 1С++, хорошо отработанная базовая часть юнит-тестов и т.д.
Тем более, что
1) некоторую часть ОлеДБ мы уже тестили в этой конфе
2) надеюсь, что тесты для этой ВК наверняка довольно просто будет использовать как для тестирования парсера прямых запросов в 1С++, так и для тестирования прямых запросов скуля и дбф.

Типа чего два раза писать Улыбка

Ну, должна быть база с тестовыми данными.
К ней набор запросов.
Запросы по очереди выполняются, сверяются.
Для начала хотя бы по количеству возвращенных строк/колонок.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 8 9 [10] 11 12 ... 20
ОтправитьПечать