2016-06-15 3 views
-2

memo_infoテーブルmemo_noとmemo_itemテーブルmemo_noとmemo_priceテーブルmemo_noすべてのメモがない場合は、1つのクエリで600は、この3つのテーブルからすべての値を削除します。どうやってやるの ?1つのPDOクエリで複数のテーブルで同じ値を削除しますか?

+0

あなたが使っているデータベースサーバはありますか? –

+0

wampserverは –

+0

だから私はそれがmysqlだと思うだろう –

答えて

1

最初に、正しい方法を実行するには、table1のインデックスキーにしながら、2つの "table2"と "table3"に "カスケード削除"オプションを設定してforeign keyを設定する必要があります。あなたのケースでは "memo_no"が列なので、テーブル1からレコードを削除すると、他の2つは自動的に削除され、外部キー制約が設定されます。行うには 第二の可能な方法は、あなたのようにそれを行うことができますPDOトランザクションを使用して

BEGIN TRANSACTION; 
DELETE FROM table1 WHERE memo_no = 600; 
DELETE FROM table2 WHERE memo_no = 600; 
DELETE FROM table3 WHERE memo_no = 600; 
COMMIT; 

であるか、またはあなたはそれを行うことができますので、同様に、 注:PDOで次のクエリダウン 書き込みが準備しての値をバインドmemo_no、私はあなたに下の作業例を与えました

DELETE a.*, b.* ,c.* 
    FROM tbl1 a 
    LEFT JOIN tbl2 b 
    ON b.memo_no = a.memo_no 
    LEFT JOIN tbl3 c 
    ON c.memo_no =b.memo_no 
    WHERE a.memo_no = 600 
+0

それは3つのクエリですが、私はこの1つだけのクエリをしたい –

+1

その後、私は言ったように、最初の提案に従う必要がありますカスケード削除オプションを設定して2つのテーブルの "memo_no"列に外国キーの制約を設定したので、からの削除のクエリ "tbl1"と言うと、他の2つのレコードは自動的に "tbl2"と "tbl3"から削除されます。 –

+0

@NazmulHossainあなたがチェックアウトすることができます、私は答えを編集しました。 –

関連する問題