синтаксис для "вставить в ... где нет" в codeigniter - PullRequest
1 голос
/ 29 ноября 2011

У меня есть таблица с 4 полями: field1, field2, field3, field4, и я хочу вставить регистры, которые не существуют, если (field1 и field2 и field3) существуют .

Мой запрос такой:

INSERT INTO mytable (`id_est`, `id_course`, `date`,`nro`)
VALUES ('5','7','2020-06-11','')
where id_est and id_course
  and date not in (select id_est, id_course, date from mytable)

Я хочу две вещи:

  1. Знайте, почему с этим запросом появляется следующая ошибка:

    # 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'WHERE `id_est` и` id_course` и `DATE`, в которых нет (выберите` id_estudiante`,' в строке 1

  2. Как я могу преобразовать этот запрос в соответствии с синтаксисом CodeIgniter?

    $data =array(
    )
    $this->db->insert('mytable', $data);
    $this->db->where_is_not();
    

Спасибо. Поле id_est и id_course и date являются ключевыми, и я не хочу, чтобы это повторялось.

Уточнение: мне нужно вставить данные в mytable со следующими полями: id_est, id_course, date и nro. Мне нужно, чтобы id_est и id_course и date (все эти три поля являются уникальными), например:

id_est         id_course          date           nro
1                  1             date1            1
1                  1             date2            3
1                  1             date2            2 (this register is not insert because id_est=1 and id_course=1 and date2 is in my table)

Ответы [ 3 ]

0 голосов
/ 29 ноября 2011

Попробуйте это:

INSERT INTO mytable (`id_est`, `id_course`, `date`, `nro`)
SELECT '5','7','2020-06-11',''
WHERE NOT EXISTS (SELECT * FROM mytable
where id_est = '5'
and id_course = '7'
and date = '2020-06-11')

Я не знаю воспламенитель кода, но вы сможете преобразовать его, как только запрос заработает

0 голосов
/ 30 ноября 2011
INSERT INTO mytable (`id_est`, `id_course`, `date`, `nro`)
select '5','7','2020-06-11',"" 
from dual 
where NOT EXISTs (select nro from estudiante_curso_fallas where id_est =5 and id_course = 7 and date = '2020-06-11')

Ошибка # 1064 - у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с «ГДЕ НЕ СУЩЕСТВУЕТ» (ВЫБЕРИТЕ * ИЗ mytable где id_est = 5

потому что я не использую от двойного. Это необходимо из двойного, потому что запрос и подзапрос находятся в одной таблице.

Спасибо всем за помощь. Я буду искать, как поместить этот запрос в синтаксис codeigniter.

0 голосов
/ 29 ноября 2011

1) Удалить ' вокруг id_est, id_course, date и nro.

2) $data = array('id_est'=>'5','id_course'=>'7','date'=>'2020-06-11','nro'=>'');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...