подскажите по "хитрому" запросу
От: niXman Ниоткуда https://github.com/niXman
Дата: 21.02.18 13:14
Оценка:
привет!

пытаюсь сделать такой запрос, который: 1)выполняет проверку на существование, 2)если не существует — вставляет, 3)если существует — селектит

по первым двум: в первом случае должен возвращать 0, иначе — 1

особо интересно, как это сделать одним запросом к БД при условии что то, что проверяем/вставляем — могут быть более одного поля.

к примеру, имеем такие строки:
string a
string b
string c


запрос должен(в псевдокоде):
func = (string h, int id) {
  if h exists {
    return (true, select id);
  } else {
    insert (h, id);
    return (false, id);
  }
}

struct {
  pair(bool, int) res_a;
  pair(bool, int) res_b;
  pair(bool, int) res_c;
} res = {
  func('rohgreiuehgreigheih', 33),
  func('srdkrughrewiugheiue', 33),
  func('yuiruywrtbrqynbgngb', 33)
};


старался объяснить как мог...
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Отредактировано 21.02.2018 13:17 niXman . Предыдущая версия . Еще …
Отредактировано 21.02.2018 13:15 niXman . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.