Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

385
Vistas
MySQL si existe valores de actualización, de lo contrario, inserte

Estoy creando una aplicación que almacena la asistencia de los estudiantes.

Estoy creando la base de datos que almacenará esta asistencia y estoy atascado en la consulta mySQL.

Quiero que la consulta busque el 'nombre de la conferencia' y el 'id_usuario' (clave externa de otra base de datos) y, si existe, incremente la asistencia de los estudiantes a la conferencia (asistió ++ y total ++)

Hasta ahora tengo esto:

 INSERT INTO `attendance`(`attendance_id`, `module_code`, `lecture_name`, `attended`, `total`, `user_id`) VALUES ("null","test","TEST",1,1,1) ON DUPLICATE KEY UPDATE attended = attended+1,total = total+1

Esto insertará una nueva fila, pero para ON DUPLICATE, no hay forma de pasar la clave principal para verificar si hay un 'duplicado'

Me preguntaba si hay otra forma de hacer esto en MySQL que no sea CON CLAVE DUPLICADA, o si alguien puede ayudarme.

Aquí hay una captura de pantalla de la base de datos. Por ejemplo, vea que la 'Investigación de operaciones' se creó cuando debería aumentar los valores. Esto se debe a que no tengo forma de agregar la clave principal a la consulta SQL.

Agradecería cualquier ayuda para esto, gracias.

captura de pantalla de la base de datos

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El uso de null entre comillas dobles es preocupante. Entonces, creo que deberías escribir la consulta como:

 INSERT INTO `attendance`(`module_code`, `lecture_name`, `attended`, `total`, `user_id`) VALUES ('test', 'TEST', 1, 1, 1) ON DUPLICATE KEY UPDATE attended = attended + 1, total = total + 1 ;

Para que esto funcione, parece que desea un índice único en (lecture_name, user_id) .

Su modelo de datos parece sospechoso porque la tabla repite el nombre de la lecture_name en varias filas. Me parece que le gustaría tener una tabla de lectures y usar lecture_id de conferencia en esta tabla.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda