1

複数のテーブルからデータを削除したいのですが、データは確かにad_masterにありますが、サブテーブルは時々異なります。次のクエリを試しましたが、少なくとも単一のレコードを削除して沈黙を保つことはありません。指定されたテーブルのいずれかに存在する場合、指定された番号 ($delete_no) に関連付けられているすべてのレコードを削除したいと考えています。

DELETE am,sub1,sub2,sub3
FROM ad_master am
INNER JOIN ad_vehicles sub1
ON sub1.Ad_no=am.Ad_no
INNER JOIN ad_properties sub2
ON sub2.Ad_no=am.Ad_no
INNER JOIN ad_electronics sub3
ON sub3.Ad_no=am.Ad_no
WHERE am.Ad_no=$delete_no

これを解決するために私を導いてください。ありがとう。

4

2 に答える 2

5

INNER の代わりに LEFT JOIN を試してください。INNER JOIN を使用すると、2 つのテーブルが交差し、ad_vehicles に $delete_no が存在しない場合、結果は空になります。

于 2013-01-28T23:36:23.897 に答える
0

参照整合性を実装しようとしています。データベースに任せてください。データベースの方がはるかに優れています。Ad_no は、マスターを除くすべてのテーブルの外部キーであり、それぞれの場合にマスターを参照し、カスケードを削除するように定義する必要があります。あとは、マスター行を削除するだけです。

于 2013-01-28T23:47:35.070 に答える