現在、Web サイトで PHP と SQL を使用しています。ユーザー (アカウント)、組織、および組織をアカウントにリンクするためのリレーショナル テーブル (多対多の関係) を含むデータベースがあります。
データベースからアカウントを削除すると、削除されるアカウントが組織にリンクされている唯一のアカウントである場合、SQL クエリはアカウントがリンクされている組織も削除する必要があります。
私はSQLに比較的慣れていないため、上記の条件下で組織テーブルから組織を削除するクエリを作成しました。これが私のクエリです:
'DELETE FROM TBL_ORGANISATIONS WHERE id = (
SELECT org_id FROM TBL_AFFILIATIONS WHERE account_email = :email AND (
SELECT COUNT(*) FROM TBL_AFFILIATIONS WHERE org_id IN (
SELECT org_id FROM TBL_AFFILIATIONS WHERE account_email = :email
)
) = 1
)'
これはこのクエリを構成する正しい方法ですか、それともより明確で効率的な方法はありますか? 前に述べたように、私は SQL の初心者であり、このようなクエリ (JOIN など) を構築するのに役立つすべての SQL キーワードの概念をまだ把握していません。
事前にアドバイスをいただければ幸いです。
ところで: 私は PDO を使用しているため、疑問に思っている方のために :email を使用しています。