这里是我想要实现的简要说明; 下面是我的查询。
有4个表和1个视图与此特定查询相关(抱歉,名称看起来很乱,但如果您看到完整列表,它们遵循一个严格的约定,就会有意义):
我的目标是从 _UpcomingPerformances 中选择所有数据,然后包括一个额外的列,指定给定的 Performance 是否有 Performer 被 Fan 添加为其收藏。这涉及选择与 Performance 相关联的 Performers 列表,以及在 Favorite_Performer 中的 Performers 列表,然后交集两个数组以确定是否有任何共同之处。
当我执行以下查询时,我收到错误信息
有4个表和1个视图与此特定查询相关(抱歉,名称看起来很乱,但如果您看到完整列表,它们遵循一个严格的约定,就会有意义):
Performance
可能有多个 Performer
,这些关联存储在 PPerformer
中。 Fan
可以有收藏夹,这些收藏存储在 Favorite_Performer
中。 _UpcomingPerformances
视图包含显示用户友好的即将上演的表演所需的所有信息。我的目标是从 _UpcomingPerformances 中选择所有数据,然后包括一个额外的列,指定给定的 Performance 是否有 Performer 被 Fan 添加为其收藏。这涉及选择与 Performance 相关联的 Performers 列表,以及在 Favorite_Performer 中的 Performers 列表,然后交集两个数组以确定是否有任何共同之处。
当我执行以下查询时,我收到错误信息
#1054 - Unknown column 'up.pID' in 'where clause'
。我怀疑这可能与对关联子查询的误用有关,但据我所知,我正在做的应该是可以工作的。当我用一个硬编码的数字替换t2
中WHERE子句中的up.pID
时,它可以工作,而且,是的,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