начало работы с циклами и итерациями в сиквеле про

Я использую сиквел про для выбора данных из нескольких таблиц. Мне нужно сделать две вещи, которые, похоже, нуждаются в каком-то цикле. Я никогда не использовал какую-либо форму итерации в sql и не могу найти ресурс для начинающих, чтобы учиться.

Может ли кто-нибудь предложить, как выполнить следующие две задачи, или предложить учебник, где я могу изучить основы и понять это оттуда:

Задача 1. Просмотрите таблицу истории версий, найдите соответствующую запись истории для заданного идентификатора, который применялся на определенную дату, и выберите значение из этой записи. Форма таблицы истории:

  • id, Item_id, version-created_at, значение

eg

  • 1, 123, 2014-05-01, 754
  • 2, 456, 2014-05-10, 333
  • 3, 123, 2014-05-27, 709

и мне нужно найти значение элемента 123 на дату 2014-05-25 (т. е. мне нужно найти идентификатор записи = 1 и значение = 754, потому что это самая последняя версия элемента 123, созданная до моей целевой даты .

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

Задание 2. Просмотрите одно текстовое поле, содержащее номер идентификатора продукта и соответствующую цену продукта в строке, и найдите идентификатор продукта с самой низкой ценой. Форма строки представляет собой серию пар цены «p» и идентификатора «i» в случайном порядке, например:

" - :p: 99.8 :i: 3 - :p: 59.0 :i: 5 - :p: 109.8 :i: 18 - :p: 82.45 :i: 46 "

и в этом примере мне нужно найти «5», являющийся идентификатором продукта с самой низкой ценой 59 долларов.

Итак, я полагаю, что мне нужно пройти через каждый из наборов p/i, возможно, путем подсчета символов, но я понятия не имею, как перебирать и сравнивать, чтобы найти лучшую цену.

Небольшая помощь не помешала бы.

Спасибо.


person AJDncnsn    schedule 29.05.2014    source источник


Ответы (1)


Для первого ответа вы можете сделать что-то вроде этого: -

SELECT value FROM history where id = 123 AND version-created_at = '2014-05-01';

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

person Ankit Bajpai    schedule 29.05.2014
comment
Извините, это не работает. Я не могу указать, чему равна дата создания, потому что есть другие элементы, кроме элемента 123, где даты будут другими. Для каждого элемента мне нужно найти версию, которая была актуальна на заданную дату, и это версия с последней датой для этого номера элемента, которая меньше заданной даты. Это невозможно сделать, рассматривая каждую строку в отдельности. - person AJDncnsn; 30.05.2014