1

私はこのようなデータベースを持っています

table 1 : area
+------------+
| id | name  |
+------------+
| 1  | area1 |
+------------+

table 2 : area_members
+------------------------+
| rel_area  | rel_school |
+------------------------+

table 3 : school
+------------+
| id  | name |
+------------+

table 4 : school_members
+---------------------------+
| rel_school  | rel_student |
+---------------------------+

table 5 : student
+------------+
| id  | name |
+------------+

この表では、どの地域にも複数の学校があり、どの学校にも複数の生徒がいます。area1を削除して、これら5つのテーブルすべてから'area1'(area、schools、students)に関連するものをすべて削除したいと思います。

いくつかのJOINおよびUNIONクエリを試しましたが、修正できませんでした。誰か助けてくれませんか?:)

4

2 に答える 2

2

単純にテーブルを結合することができ、最良の部分は、MySQLでは1つのクエリで複数のテーブルを削除できることです。

DELETE  a, b, c, d, e
FROM    area a
        INNER JOIN are_members b
            ON a.ID = b.rel_area
        INNER JOIN school c
            ON b.rel_school = c.ID
        INNER JOIN school_members d
            ON c.ID = d.rel_school
        INNER JOIN student e
            ON d.rel_student = e.ID
WHERE   a.Name = 'area1'

PS:上記のステートメントを実行する前に、データベースをバックアップしてください

于 2013-03-24T12:14:00.347 に答える
0

外部キー制約を定義するときに、削除されたレコードが外部キーに関連する他のレコードに影響を与えるかどうかを指定できます。外部キーを宣言するときに指定できるオプションがあります:ondeletecascade。テーブルBがテーブルAに属しているとします。カスケードの削除で指定した場合:これにより、テーブルAのレコードが削除されたときに、テーブルAのレコードに関連している場合、テーブルBレコード削除されます。

于 2013-03-24T12:36:56.473 に答える