Информация об изменениях

Сообщение подскажите по "хитрому" запросу от 21.02.2018 13:14

Изменено 21.02.2018 13:15 niXman

подскажите по "хитрому" запросу
привет!

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

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

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

к примеру, имеем такие строки:
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)
};


старался объяснить как мог...
подскажите по "хитрому" запросу
привет!

пытаюсь сделать такой запрос, который: 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)
};


старался объяснить как мог...