加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 从3个表中删除MySQL

发布时间:2020-12-13 21:36:17 所属栏目:PHP教程 来源:网络整理
导读:我有以下表,在我的数据库中有这些键: 预订 SESSION_ID 会议 SESSION_ID COURSE_ID 课程 COURSE_ID 我想创建一个查询来删除与单个课程相关的所有日期(course_id).例如,如果我想删除course_id = 10,我希望删除任何session_id = 10的会话,此外还需要删除与这些
我有以下表,在我的数据库中有这些键:

预订
SESSION_ID

会议
SESSION_ID
COURSE_ID

课程
COURSE_ID

我想创建一个查询来删除与单个课程相关的所有日期(course_id).例如,如果我想删除course_id = 10,我希望删除任何session_id = 10的会话,此外还需要删除与这些会话相关的任何预订.

这可能吗?接近它的最佳方法是什么? (我用PHP写这个.)

任何帮助非常感谢!

解决方法

MySQL supports multi-table deletes:

DELETE FROM BOOKINGS 
 USING BOOKINGS JOIN SESSIONS JOIN COURSES
 WHERE BOOKINGS.session_id = SESSIONS.session_id
   AND SESSIONS.course_id = COURSES.course_id
   AND COURSES.course_id = ?

另一种方法是使用stored procedure,并按正确的顺序处理删除:

>预订

DELETE FROM BOOKINGS
 WHERE EXISTS(SELECT NULL
                FROM SESSIONS s 
               WHERE s.session_id = session_id
                 AND s.course_id = ?)

>会话

DELETE FROM SESSIONS
 WHERE EXISTS(SELECT NULL
                FROM COURSES c
               WHERE c.course_id = course_id
                 AND c.course_id = ?)

>课程

DELETE FROM COURSES
 WHERE course_id = ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读