我在这里有三个表,我正在尝试对其进行复杂的组合查询。
表 1(团队)中有团队:
id name
------------
150 LA Lakers
151 Boston Celtics
152 NY Knicks
表 2(分数)中有分数:
id teamid week score
---------------------------
1 150 5 75
2 151 5 95
3 152 5 112
表 3(tickets) 里面有门票
id teamids week
---------------------
1 150,152,154 5
2 151,154,155 5
我有两个要尝试编写的查询,而不是每次查询票时都尝试对这些求和,而是在票中添加了一个每周分数字段。这个想法是,每当为团队输入新分数时,我都可以获取该团队 ID,获取具有该团队/周组合的所有门票,并根据他们的团队得分总和进行更新。
我尝试了以下方法来获得我正在寻找的结果(在我尝试更新它们之前):
SELECT t.id, t.teamids, (
SELECT SUM( s1.score )
FROM scores s1
WHERE s1.teamid
IN (
t.teamids
)
AND s1.week =11
) AS score
FROM tickets t
WHERE t.week =11
AND (t.teamids LIKE "150,%" OR t.teamids LIKE "%,150")
不仅查询速度慢,而且它似乎也不返回分数的总和,它只返回列表中的第一个分数。
任何帮助是极大的赞赏。