mysql select при условии наличия будущих записей

0

У меня следующая ситуация. У меня есть база данных транзакций о нескольких контрактах. Я ищу первую транзакцию, где alpha < alphaBound и контракт имеет будущее, то есть есть записи после даты того же ID контракта. Для этого я делал:

select transactionID, 
       date, 
       alpha, 
       contractID 
  from myDB 
 where date >= '2000-01-01' 
   and alpha < alphaBound

а затем повторяя результаты следующим образом:

for(i in 1:length(resultSet) ) {
  date.tmp = resultSet[i, date]
  contractID.tmp = resultSet[i, contractID]

  future = doQuery("select * from myDB where date > " + date.tmp + " AND contractID = " + contractID.tmp)

  if(future is not empty) {
      # break! Found the entry I wanted
  }

}

Как я могу сделать это в 1 запросе? Спасибо.

Теги:

1 ответ

3
Лучший ответ

Использование:

SELECT t.transactionid,
       t.date,
       t.alpha,
       t.contractid
  FROM mydb t
 WHERE t.date >= '2000-01-01' 
   AND t.alpha < alphaBound
   AND EXISTS(SELECT NULL
                FROM mydb x
               WHERE x.contractid = t.contractid
                 AND x.date > t.date)
  • 0
    Спасибо за запрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню