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+1Esto 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.
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.