1

だから私はこのアプリを持っています、そこでユーザーは経費報告書を作成します。各レポートには多くの領収書があり、ユーザーが関連する領収書とともにレポートを削除できるようにする必要があります。これを実行するSQLステートメントがありますが、レポートに領収書がある場合にのみ機能するため、領収書がない場合、レポートは削除されません。

    mysql_query("DELETE expense_general, expense_receipts FROM expense_general JOIN expense_receipts ON expense_general.id = expense_receipts.expense_general_id WHERE expense_general.id = {$expenseID}");

$expenseIDはレポートレコードID番号です。領収書のないレポートを削除するステートメントを取得できますか?

4

2 に答える 2

1

LEFT JOINクエリを使用します。

DELETE expense_general, expense_receipts 
FROM expense_general 
LEFT JOIN expense_receipts ON expense_general.id = expense_receipts.expense_general_id 
WHERE expense_general.id = {$expenseID}

expense_generalこれは、テーブルにリンクされているものがあるかどうかに関係なく、テーブルで一致しexpense_receiptsます。

于 2012-12-20T17:33:48.103 に答える
0

テーブル間に「外部キー関係」を定義する必要があります。明細テーブルexpense_receiptsは と外部キー関係にexpense_generalなり、 から行を削除するexpense_generalと、対応する明細行も削除されます。

「mysql 外部キー」をグーグルで検索すると、多くのチュートリアルから選択できるはずです。

于 2012-12-20T17:33:48.333 に答える