这是对我要完成的工作的简要说明;我的查询如下。
有 4 个表和 1 个视图与此特定查询相关(抱歉,名称看起来很乱,但它们遵循严格的约定,如果您看到完整列表,这将是有意义的):
Performance
s 可能有很多Performer
个 s,这些关联存储在PPerformer
. Fan
s 可以有收藏夹,这些收藏夹存储在Favorite_Performer
. 该_UpcomingPerformances
视图包含显示即将进行的表演的用户友好列表所需的所有信息。
我的目标是从 _UpcomingPerformances 中选择所有数据,然后包含一个额外的列,指定给定的 Performance 是否有粉丝添加为他们最喜欢的 Performer。这包括选择与表演相关联的表演者列表,以及该粉丝在 Favorite_Performer 中的表演者列表,并将这两个数组相交以确定是否有任何共同点。
当我执行下面的查询时,我得到了错误#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