У меня есть эти таблицы:Подготовленные отчеты: Дублированный обновления ключа с Где
stundenplan
+----+---------+-------+--------+---------+---------+------+
| id | user_id | tag | stunde | fach | lehrer | raum |
+----+---------+-------+--------+---------+---------+------+
| 1 | 1 | 1 | 1 | MATH | SM | 101 |
| 2 | 1 | 1 | 2 | MATH | SM | 101 |
| 3 | 1 | 1 | 3 | MATH | SM | 101 |
| 4 | 1 | 1 | 4 | MATH | SM | 101 |
| 5 | 1 | 1 | 5 | MATH | SM | 101 |
| 6 | 1 | 1 | 6 | MATH | SM | 101 |
| 7 | 1 | 2 | 1 | MATH | SM | 101 |
| 8 | 1 | 2 | 2 | MATH | SM | 101 |
| .. | ... | ... | ... | ... | ... | ... |
users
+---------+----------+----
| user_id | username | ...
+---------+----------+----
| 1 | User1 | ...
+---------+----------+----
Мой запрос (который не имеет смысла для меня, потому что user_id отсутствует в части обновления):
$sql = $db->prepare("
INSERT INTO stundenplan
(tag, stunde, user_id, fach, lehrer, raum)
VALUES
(?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
fach = VALUES(fach),
lehrer = VALUES(lehrer),
raum = VALUES(raum)
");
$sql->bind_param('iiissi', $input_tag, $input_stunde, $input_fach, $input_lehrer, $input_raum);
Если бы я должен вставить что-то запрос будет таким:
INSERT INTO stundenplan (tag, stunde, user_id, fach, lehrer, raum) VALUES (?, ?, ?, ?, ?, ?)
Если бы я должен обновить запрос будет таким:
UPDATE stundenplan SET fach = ?, lehrer = ?, raum = ? WHERE user_id = ?
Как я могу объединить эти два запроса в один, как я пытался раньше?
Что является уникальным ключом Stundenplan таблицы? –
в настоящее время тег, stunde. есть тег, stunde, user_id лучше? – Bernd
Является ли user_id студентом? Или это техническая вещь (пользователь, который создал/изменил план)? –