SQL запрос в SQLite - страница 7

 
prostotrader #:

Спасибо большое, все почти получилось, но значения почему-то не подставились


А сам запрос такой

И как сказать, что isin_id это будет primary key?

Так

Не надо каждый раз таблицы создавать, это медленная операция.

Если записи в таблице неактуальны, их надо удалять, но не таблицу.
 
Yuriy Zaytsev #:

Если так то лучше получать из запроса - особо акткутально если иструменты могут обновится.

особой разницы не будет - просто в п.2 возникнет промежуточная операция 

с учетом что в первичных таблицах данные могут обновится


п.1 получить данные из запроса и обработать их

п.2 получить данные из запроса , уложить их в промежуточныую таблицу  futures    , далее получить данные из таблицы  futures     и обработать их

Наверное, лучше объяснить, что нужно в конечном итоге.

В ходе работы программы (стати это не КВИК, а Плаза2), приходит таблица session, в которой указано расписание сессий и номер самой сессии.

В списке торгуемых инструментов обязательно есть номер сессии.

ВАЖНО, в таблице session может быть не одна запись, а несколько, но приоритетной считается запись с более высоким sess_id

Когда создается советник (советники, их может быть много), то ему обязательно должны передаваться актуальные данные isin_id. short_isin из

списка инструментов с актуальным номером сессии

. Каждый советник имеет свободный доступ к Базе данных, поэтому присвоив советнику

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

Создается советник (выбирается из списка торгуемых инструментов), ему передаются его актуальные данные, а уже сам советник выбирает из базы нужные только ему данные. 

Вот, например, советник получил "свой" стакан


Но чтобы это получить, нужны isin_id и sess_id

А сессия 11022 - уже устарела

А в таблице торгуемых инструментов два одинаковых инструмента, но с разным sess_id и нужно выбрать правильный (по номеру сесии)

 
prostotrader #:

Наверное, лучше объяснить, что нужно в конечном итоге.

В ходе работы программы (стати это не КВИК, а Плаза2), приходит таблица session, в которой указано расписание сессий и номер самой сессии.

В списке торгуемых инструментов обязательно есть номер сессии.

ВАЖНО, в таблице session может быть не одна запись, а несколько, но приоритетной считается запись с более высоким sess_id

Когда создается советник (советники, их может быть много), то ему обязательно должны передаваться актуальные данные isin_id. short_isin из

списка инструментов с актуальным номером сессии

. Каждый советник имеет свободный доступ к Базе данных, поэтому присвоив советнику

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

Создается советник (выбирается из списка торгуемых инструментов), ему передаются его актуальные данные, а уже сам советник выбирает из базы нужные только ему данные. 

Вот, например, советник получил "свой" стакан


Но чтобы это получить, нужны isin_id и sess_id

А сессия 11022 - уже устарела

при актуализации на последнем запросе будет получена сессия 11023

 
Yuriy Zaytsev #:

при актуализации на последнем запросе будет получена сессия 11023

А если в таблице session будет обратный порядок?

 
prostotrader #:

А если в таблице session будет обратный порядок?

   where  T1.sess_id = (Select MAX( TmaxSess_id.sess_id ) from table1 as TmaxSess_id  )

при том запросе какой описал - выбирается max( sess_id ) поэтому всегда будет максимальный номер,

в SQL физический порядок не важен.

 
Yuriy Zaytsev #:

   where  T1.sess_id = (Select MAX( TmaxSess_id.sess_id ) from table1 as TmaxSess_id  )

при том запросе какой описал - выбирается max( sess_id ) поэтому всегда будет максимальный номер,

в SQL физический порядок не важен.

Ок, все получается, только еще, а как исключить из списка short_isin = *_CLT 


 
prostotrader #:
как исключить из списка short_isin = *_CLT
Добавить условие на несоответствие строки шаблону.
 
Sergey Gridnev #:
Добавить условие на несоответствие строки шаблону.

Сергей!

Я уже писал, что начал знакомится с кухней Баз данных, только три дня назад.

То, что нужно добавить условие и так понятно, но как?

Там же не вся стока, а часть строки (*_CLT).

 
Sergey Gridnev #:
Добавить условие на несоответствие строки шаблону.

Сергей , лучше примером запроса, человек SQL пока не знает.


select
 T2.sess_id,
 T2.isin_id, 
 T2.short_isin,
 T2.isin, 
 T2.name
From table1  as T1
Left join table2   as T2
On T1.sess_id = T2.sess_id
where  T1.sess_id = (Select MAX( TmaxSess_id.sess_id ) from table1 as TmaxSess_id  )
  and  T2.short_isin NOT LIKE '%_CLT'
 
prostotrader #:

Сергей!

Я уже писал, что начал знакомится с кухней Баз данных, только три дня назад.

То, что нужно добавить условие и так понятно, но как?

Там же не вся стока, а часть строки (*_CLT).

 and  T2.short_isin NOT LIKE '%_CLT'

Надо будет учесть как выставлены настройки , иногда базу отстраивают с чувствительностью к регистру,

но чаще делают настройки базы без учета регистра.  т е если все хорошо отcев пройдет и  для _clt  и _CLT   и _Clt _cLt   и т д

p.s.

но судя по всему там всегда _CTL в верхнем регистре потому все хорошо!

Но брокеры точнее их службы ИТ - коварные  - могут от каких то своих внутренних соображений через пол года или 3 года влепить в нижнем регистре  _ctl

и если база настрена без чувствительности к регистру - то все отработает без проблем.

Меня всегда смущалао что у разных брокеров по разному может называться одна и таже субстанция например EURUSD у некоторых особо талантливых может быть t_EURUSD :) и. т. д. с вариантами

такое ощущение что брокеры специально издеваются над автоматизацией.