現在、PHPとmysqlの連携に関して勉強している者です。
恐れ入りますが、論理削除に関して質問させて頂けますでしょうか。
[質問内容]
親レコードを論理削除した後、論理削除されていないデータをすべて取り出したいです。
ただ、論理削除された親レコードに属している子レコードは、親レコードに従い取り出さないようにしたいです。
(※すみませんが子レコードは、論理削除されていない状態のままでお願い致します。)
[mysqlの前提] データベース名:test_db テーブル名:t_bbs フィールド : id int(11) name varchar(255) body varchar(255) parent_id int(11) ※parent_idがnullの場合は親レコードとする。 parent_idに1が入っていれば、id=1の子レコードとする。 deleted_at datetime テーブルの構造 +----+-----------------------------+--------------------------------------+-----------+---------------------+ | id | name | body | parent_id | deleted_at | +----+-----------------------------+--------------------------------------+-----------+---------------------+ | 1 | Fujiwara | Fujiwara Bunta desu | NULL | 2020-04-14 18:46:49 | | 2 | Fujiwara | Fujiwara Takumi desu | 1 | NULL | | 3 | Takahashi | Takahashi Ryosuke desu | NULL | NULL | | 4 | Takeuchi | Takeuchi Itsuki desu | NULL | NULL | +----+-----------------------------+--------------------------------------+-----------+---------------------+
[説明]
test_dbというデータベースに、
t_bbsというテーブルを作成致しました。
t_bbsのテーブルの中に、
id、name、body、parent_id、deleted_atという5つのフィールドがございます。
親レコードの見分け方は、
parent_idというフィールドがNULLであれば、親レコードとさせていただきます。
逆に、parent_idに 1 が入っていれば、id = 1 の子レコードとさせていただきます。
(parent_idに 2が入ってれば、 id = 2 の子レコードとなります。)
論理削除の見分け方は、
deleted_atというフィールドを設けており
こちらに値が入っていれば論理削除されている状態。
(今回であれば、id=1のみ論理削除されています。)
deleted_atフィールドの値がnullであれば、論理削除されていない状態とさせていただきます。
[再度、質問内容に戻りますが、]
親レコード(id = 1)を論理削除を行い、論理削除されていないデータをすべて取り出したいです。(つまり、id=3、4のみ取り出したいです。)
ただ、論理削除された親レコードにに属している、子レコードは取り出さないようにしたいです。(id=2は id=1の子レコードのため取り出さないです。)
つまり、id=1と2は取り出さず、id=3と4のみ取り出しく存じます。
どのような取り出し方を行えばよろしいでしょうか。
初歩的な質問となってしまい大変恐れ入りますが、ご回答頂けますと幸いでございます。
また、分かりづらい点などございましたら
お気軽にご指摘頂けますと幸いでございます。
何卒どうぞよろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー