MySQL запрос DELETE и JOIN в трех таблицах

219
12 октября 2018, 22:10

Есть три таблицы:

table1: id, name
table2: id, name, table1_id
table3: id, name, table2_id

Как при удалении поля из верхней, удалить все привязанные поля в нижних? Проблема бОльшей вложенности не стоит, 3 таблицы 100% максимум. Пробовал вот так, но работает не совсем корректно, сносит table3 целиком

DELETE table1, table2, table3 FROM table1 INNER JOIN table2 ON table2.table1_id = table1.id INNER JOIN table3 ON table3.table2_id = table2.id WHERE table1.id = 1

Answer 1

1 вариант (рекомендованный): Настроить каскадное удаление для внешних ключей table1_id и table2_id.

2 вариант: Поочередно удалить записи сначала из table3, потом table2 и наконец из table1

DELETE FROM table3 WHERE table2_id in 
    (SELECT id FROM table2 WHERE table1_id in 
        (SELECT id FROM table1 WHERE [здесь ваше условие для выбора удаляемой записи из таблицы 1]))
DELETE FROM table2 WHERE table1_id in 
    (SELECT id FROM table1 WHERE [здесь ваше условие для выбора удаляемой записи из таблицы 1])
DELETE FROM table1 WHERE [здесь ваше условие для выбора удаляемой записи из таблицы 1]
Answer 2

Можно вот так сделать:

  • Добавляем констрейны

    ALTER TABLE table2 ADD CONSTRAINT FK_table1_table2 FOREIGN KEY (table1_id) REFERENCES table1(id) ON DELETE CASCADE ON UPDATE CASCADE;

    ALTER TABLE table3 ADD CONSTRAINT FK_table2_table3 FOREIGN KEY (table2_id) REFERENCES table2(id) ON DELETE CASCADE ON UPDATE CASCADE;

  • Производим удаление

    DELETE FROM table1 t1 WHERE t1.id = 5;

READ ALSO
!important для всего блока css

!important для всего блока css

Подскажите, есть ли в css возможность выставления свойства !important сразу для всех свойств

205
Смещаются div при использовании hover

Смещаются div при использовании hover

При наведении на блок съезжают нижние, а надо чтоб он перекрывал собой остальныеКак можно сделать?

175
Передача аргумента скрипту в HTML

Передача аргумента скрипту в HTML

Есть поле ввода кода и кнопка ДобавитьКнопка берет значение с поля ввода, а как сделать так, чтобы отдельная кнопка передавала свое значение?...

229
Обернуть каждое слово в тег

Обернуть каждое слово в тег

Возможно ли обернуть каждое слово по отдельности в тег ? На примере текста : Cras ultricies ligula sed magna dictum porta только что бы каждое слово было по отдельности...

209