Удаление из нескольких таблиц в MySQL - PullRequest
0 голосов
/ 24 ноября 2018

Я хотел бы объединить следующие два запроса.Записи всегда будут существовать в таблице пользователей и таблице active_kpi, но они могут не существовать в таблице получателей.Даже если записей нет в таблице получателей, я все же хочу, чтобы запрос удалил записи из двух других таблиц.

    $sql = "DELETE u, ak FROM users u JOIN active_kpi ak ON ak.group_id = 
    u.group_id WHERE u.group_id = ?";
    $stmt = $this->db->prepare($sql);
    $stmt->execute([$group_id]);

    $sql = "DELETE FROM recipients WHERE group_id = ?";
    $stmt = $this->db->prepare($sql);
    $stmt->execute([$group_id]);

1 Ответ

0 голосов
/ 24 ноября 2018

попробуйте это:

DELETE u,ak,r
FROM users u INNER JOIN active_kpi ak ON ak.group_id = u.group_id 
    LEFT JOIN recipients r ON ak.group_id = r.group_id
WHERE u.group_id = ?

обратите внимание, что left join используется для покрытия строк с отсутствием получателей.

...