SQLite 从不同表中条件选择

问题描述 投票:0回答:1

我有一个表格,其中包含比赛标识符和相应的球员/球队标识符,表示为

home
/
away
。 每个团队
tid
由两名玩家组成,每个玩家都有自己的标识符
pid
。 问题是在表
matches
中我不知道列
home
/
away
是代表团队还是单个玩家。

我想为每场比赛添加代表主场球员/球队的球员标识符的列

home_ids
。我编写了以下查询,给出了 “结果:行值被误用”-错误

SELECT match_id,
CASE WHEN (SELECT pid FROM players WHERE m.home = pid)
            IS NULL THEN (SELECT pid_1, pid_2 FROM teams WHERE m.home = tid)
        ELSE (m.home, NULL)
    END AS home_ids
FROM matches m 

如何修改我的查询以使其按预期工作?

sql sqlite
1个回答
0
投票

您拥有所需的所有数据,只是没有选择它。像这样的东西应该有帮助:

SELECT m.match_id, p.pid AS p_pid t.pid_1 AS t_pid_1, t.pid_2 AS t_pid_2
FROM matches m
LEFT JOIN players p
ON m.home = p.pid
LEFT JOIN teams t
ON m.home = t.tid
WHERE
   NOT (
           p.pid IS NULL AND
           t.tid IS NULL
       )

本质上,我们按照

m.home
匹配对应 ID 的标准选择所有存在球员或球队的比赛。您可能会面临的问题是
tid
可能等于
pid
,因此两者可能会混淆。

© www.soinside.com 2019 - 2024. All rights reserved.