私は削除されたカテゴリにない記事を検索しようとしています。私はソフト削除を使用し、カテゴリーはデータベースで削除されたものとしてマークされます(flag_deleted = 1)。カテゴリが削除されると、子は削除済みとしてマークされません。それは記事が削除済みとしてマークされていないカテゴリに割り当てられている可能性がありますが、直接割り当てられたカテゴリは既に削除されたカテゴリの子です。MySQLは削除されたカテゴリにない記事を見つける
カテゴリが削除されたカテゴリの子である場合、ツリーを検索してチェックする解決策が見つかりました。
私は以下のデータベース構造を持っています。
article
------
id
category_id
title
flag_deleted
category
------
id
id_parent
name
flag_deleted
私は、次のクエリを使用しています:
SELECT
`ID`,
`title`,
FROM
`article` a
WHERE
`flag_deleted`=0
AND
(
SELECT sum(case when T2.flag_deleted = 1 then 1 else 0 end) as deleted_count
FROM (
SELECT
@r AS _id,
(SELECT @r := id_parent FROM category WHERE id = _id) AS id_parent,
@l := @l + 1 AS lvl
FROM
(SELECT @r := id_category, @l := 0) vars,
category m
WHERE @r <> 0
) T1
JOIN
category T2
ON
T1._id = T2.ID
) = 0
この解決策の問題は、私はサブクエリでid_categoryにアクセスすることはできません。サブクエリでid_categoryの代わりにidを手動で入力すると、期待通りに機能します。
あなたの質問を編集し、あなたがしようとしていることを説明してください。 –