Я создаю приложение, которое хранит посещаемость студентов.
Я создаю базу данных, которая будет хранить эту посещаемость, и я застрял на запрос MySQL.
Я хочу, чтобы запрос выполнял поиск по «названию лекции» и «user_id» (внешний ключ из другой базы данных), и, если таковой существует, увеличивает посещаемость лекцией студентов (посещено ++ и всего ++)
Пока у меня есть это:
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
Это вставит новую строку, но для ON DUPLICATE нет способа передать первичный ключ для проверки на «дубликат».
Мне было интересно, есть ли другой способ сделать это в MySQL, кроме ON DUPLICATE KEY или кто-нибудь может мне помочь.
Вот скриншот базы данных. Например, см. «Исследование операций», которое было создано, когда оно должно увеличивать значения. Это потому, что у меня нет возможности добавить первичный ключ в запрос SQL.
Буду признателен за любую помощь в этом,
Благодарю.
Использование null
в двойных кавычках вызывает беспокойство. Итак, я думаю, что вы должны написать запрос как:
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 ;
Чтобы это сработало, вам нужен уникальный индекс (lecture_name, user_id)
,
Ваша модель данных кажется подозрительной, потому что таблица повторяется lecture_name
на нескольких рядах. Мне кажется, что вы хотели бы lectures
стол и использовать lecture_id
в этой таблице.
Других решений пока нет …