Как исправить «У вас есть ошибка в вашем синтаксисе SQL» в nodeJS, используя WHERE NOT EXISTS - PullRequest
0 голосов
/ 14 мая 2019

Люди, я работаю с nodejs + angular, и когда я пытаюсь сделать запрос с ГДЕ НЕ СУЩЕСТВУЕТ программа вылетает и выдает синтаксическую ошибку, и я не знаю, почему.

Ошибка: ER_PARSE_ERROR: у вас есть ошибка в вашем синтаксисе SQL; проверить руководство, которое соответствует вашей версии сервера MySQL для права синтаксис для использования рядом с «где не существует» (SELECT * FROM disp_aulas WHERE 'aula' = 'E' AND 'turno' = '0' AN 'в строке 1

Также, если есть лучший способ сделать то, что я хочу, пожалуйста, скажите мне.

Я пытался использовать IGNORE , но это все равно дублирует информацию ... может быть, я не понимаю, как использовать "там, где нет".

router.post('/',(req,res,next)=> {
    // FALTA COMPROBAR SI ES ADMIN
    var dato = {
        aula : req.body.aula,
        cantPC : req.body.cantPC,
        fechaIni : req.body.fechaIni,
        fechaFin : req.body.fechaFin,
        turno : req.body.turno,
        herramientas : req.body.herramientas,
        cbox0 : req.body.cbox0,
        cbox1 : req.body.cbox1,
        cbox2 : req.body.cbox2,
        cbox3 : req.body.cbox3,
        cbox4 : req.body.cbox4,
        cbox5 : req.body.cbox5
    };


    var fInicio = new Date(dato.fechaIni);
    var fFin = new Date(dato.fechaFin);
    var timeDifference = Math.abs(fFin.getTime() - fInicio.getTime());
    var differentDays = Math.ceil(timeDifference / (1000*3600*24));

    var today = moment(fInicio,"MM-DD-YYYY");

    var tango = parseInt(dato.herramientas[0]);
    var diseno = parseInt(dato.herramientas[1]);
    if(tango != 1) {
        tango = 0;
    }
    if(diseno != 1) {
        diseno = 0;
    }

    var lunes = dato.cbox0;
    var martes = dato.cbox1;
    var miercoles = dato.cbox2;
    var jueves = dato.cbox3;
    var viernes = dato.cbox4;
    var sabado = dato.cbox5;


    if(lunes != 1){
        lunes = false;
    }
    if(martes != 1){
        martes = false;
    }
    if(miercoles != 1){
        miercoles = false;
    }
    if(jueves != 1){
        jueves = false;
    }
    if(viernes != 1){
        viernes = false;
    }
    if(sabado != 1){
        sabado = false;
    }

    console.log(differentDays);
    for(let i = 0; i <= differentDays+1; i++) {

        var tomorrow = today.add(1,'days');
        var fecha = tomorrow.format('YYYY-MM-DD');

        // console.log(fecha);

        if( tomorrow.day() == 0){
        } else if (tomorrow.day() == 1 && lunes){

            var dato2 = {
                aula : req.body.aula,
                cantPC : req.body.cantPC,
                fecha : fecha,
                tango: tango,
                diseno: diseno,
                turno : req.body.turno
            }
            console.log("Imprimo dato2: ", dato2);

            var q = "INSERT INTO `disp_aulas` SET ? WHERE NOT EXISTS (SELECT * FROM `disp_aulas` WHERE aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"')";
            bd.query(q,dato2,(err,row)=> {if(err){throw err;}});

        } else if (tomorrow.day() == 2 && martes){

            var dato2 = {
                aula : req.body.aula,
                cantPC : req.body.cantPC,
                fecha : fecha,
                tango: tango,
                diseno: diseno,
                turno : req.body.turno
            }
            console.log("Imprimo dato2: ", dato2);

            var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
            bd.query(q,dato2,(err,row)=> {if(err){throw err;}});

        } else if(tomorrow.day() == 3 && miercoles){

            var dato2 = {
                aula : req.body.aula,
                cantPC : req.body.cantPC,
                fecha : fecha,
                tango: tango,
                diseno: diseno,
                turno : req.body.turno
            }
            console.log("Imprimo dato2: ", dato2);

            var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
            bd.query(q,dato2,(err,row)=> {if(err){throw err;}});

        } else if(tomorrow.day() == 4 && jueves){

            var dato2 = {
                aula : req.body.aula,
                cantPC : req.body.cantPC,
                fecha : fecha,
                tango: tango,
                diseno: diseno,
                turno : req.body.turno
            }
            console.log("Imprimo dato2: ", dato2);

            var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
            bd.query(q,dato2,(err,row)=> {if(err){throw err;}});

        } else if(tomorrow.day() == 5 && viernes){
            var dato2 = {
                aula : req.body.aula,
                cantPC : req.body.cantPC,
                fecha : fecha,
                tango: tango,
                diseno: diseno,
                turno : req.body.turno
            }
            console.log("Imprimo dato2: ", dato2);

            var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
            bd.query(q,dato2,(err,row)=> {if(err){throw err;}});

        } else if(tomorrow.day() == 6 && sabado){
            var dato2 = {
                aula : req.body.aula,
                cantPC : req.body.cantPC,
                fecha : fecha,
                tango: tango,
                diseno: diseno,
                turno : req.body.turno
            }
            console.log("Imprimo dato2: ", dato2);

            var q = "INSERT INTO disp_aulas SET ? WHERE NOT EXISTS (SELECT aula, turno, fecha FROM disp_aulas WHERE (aula='"+dato2.aula+"' AND turno='"+dato2.turno+"' AND fecha='"+dato2.fecha+"'))";
            bd.query(q,dato2,(err,row)=> {if(err){throw err;}});

        }
        // console.log(i);
    }

    res.status(200).send([{id:1}]);

});

Я ожидаю, что программа сделает вставку, только если ее еще нет на столе.

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