これが私が達成しようとしていることの簡単な説明です。私のクエリは以下のとおりです。
この特定のクエリに関連する 4 つのテーブルと 1 つのビューがあります (名前が乱雑に見えて申し訳ありませんが、完全なリストを見れば意味のある厳密な規則に従っています)。
Performance
には多数Performer
の が含まれる場合があり、それらの関連付けは に格納されPPerformer
ます。Fan
は、 に保存されているお気に入りを持つことができますFavorite_Performer
。_UpcomingPerformances
ビューには、今後の公演のユーザー フレンドリーなリストを表示するために必要なすべての情報が含まれています。
私の目標は、_UpcomingPerformances からすべてのデータを選択し、特定のパフォーマンスにファンがお気に入りとして追加したパフォーマーがあるかどうかを指定する列を 1 つ追加することです。これには、パフォーマンスに関連付けられたパフォーマーのリストと、そのファンの Favorite_Performer にあるパフォーマーのリストを選択し、2 つの配列を交差させて共通点があるかどうかを判断することが含まれます。
以下のクエリを実行すると、エラーが発生します#1054 - Unknown column 'up.pID' in 'where clause'
。相関サブクエリの誤用に何らかの形で関連していると思われますが、私がしていることはうまくいくはずです。up.pID
(の WHERE 句で) をハードコードされた数値に置き換えるt2
と機能します。はい、pID は _UpcomingPerformances の既存の列です。
ご協力いただきありがとうございます。
SELECT
up.*,
CASE
WHEN EXISTS (
SELECT * FROM (
SELECT RID FROM Favorite_Performer
WHERE FanID = 107
) t1
INNER JOIN
(
SELECT r.ID as RID
FROM PPerformer pr
JOIN Performer r ON r.ID = pr.Performer_ID
WHERE pr.Performance_ID = up.pID
) t2
ON t1.RID = t2.RID
)
THEN "yes"
ELSE "no"
END as pText
FROM
_UpcomingPerformances up