Помогите составить запрос в SQL. ПЛИССССССС

 

Здравствуйте, помогите пожалуйста  решить задачку. Учусь составлять запросы.

Задача:

- Получить последнее значение где ur=3 и pips<0


SELECT 
    max(id)
  /*     pips<0*/
  FROM POSITION
  WHERE ur=3  pips<0;
 

Так как понял считает 


SELECT 
max(id),
pips/*,
/*sum(pips)*/
   /* max(id)
  /*     pips>0*/
  FROM POSITION
  WHERE ur=3 AND pips<0;
 

SELECT `id`,`ur`,`pips`
FROM  `positions`
WHERE `ur`==3 AND `pips`<0
ORDER BY `id`
LIMIT 1

как-то так :-)

слово "последнее" подразумевает наличие порядка/сортировки и количества

кавычки `` опция, на случай имён совпадающих с ключевыми словами

 
Maxim Kuznetsov #:

SELECT `id`,`ur`,`pips`
FROM  `positions`
WHERE `ur`==3 AND `pips`<0
ORDER BY `id`
LIMIT 1

как-то так :-)


Если id у значений возрастает, то это запрос вернёт первое, а не последнее.
 
Sergey Gridnev #:

Если id у значений возрастает, то это запрос вернёт первое, а не последнее.

ASC, DESC в ORDER BY

https://www.sqlite.org/lang_select.html

 

Вот задачка уже посложнее.

Как посчитать максимальное количество отрицательных значений pips подряд?

SELECT  id,
        pips
	max(count) // указать макс значение отрицательных pips подряд
  FROM POSITION
           pips<0;
 

Здравствуйте, не могу понять в чем проблема


   DatabaseTransactionBegin(database);
//--- внесем в таблицу каждую сделку через запрос
   string request_text="UPDATE POSITION SET pips="+DoubleToString(position_buff[i].pips)+
                       ", key="+position_buff[i].key+
                       ", priceCl="+DoubleToString(position_buff[i].priceCl)+
//", priceSL="+DoubleToString(position_buff[i].priceSL)+
                       ", timeCl="+IntegerToString(position_buff[i].timeCl)+
                       " WHERE ID="+IntegerToString(position_buff[i].ID);


Добавляю строковую переменную 

", key="+position_buff[i].key+

запрос перестаёт работать, в чем может быть дело?

 
Mikhail Toptunov #:

Здравствуйте, не могу понять в чем проблема



Добавляю строковую переменную 

запрос перестаёт работать, в чем может быть дело?

Строку в кавычки обернуть
Еще про экранирование не забывать
 
Aliaksandr Hryshyn #:
Строку в кавычки обернуть
Еще про экранирование не забывать

Хмм, и так всё же в кавычках. Прикол в том что без строчки key все работает, сама строчка

", key="+position_buff[i].key+

содержит только цифры через пробел , например 

key=1 1644476520 763


 
Mikhail Toptunov #:

Хмм, и так всё же в кавычках. Прикол в том что без строчки key все работает, сама строчка

содержит только цифры через пробел , например 

key=1 1644476520 763


В запросе значение обернуть в кавычки. В кавычках у вас строки MQL
 
Mikhail Toptunov #:

Хмм, и так всё же в кавычках. Прикол в том что без строчки key все работает, сама строчка

содержит только цифры через пробел , например 

key=1 1644476520 763


Ну и как Вы видите это в тексте SQL запроса?

UPDATE POSITION SET pips=...
 key=1 1644476520 763
...

После key=1 ожидается запятая, либо ключевое слово языка запросов.

Причина обращения: