我们一直试图根据不同的属性将三个视图表连接在一起,并且由于出现重复项而出现了一些错误。 我们的代码如下所示:
create view AllScores as
select players.*, topattacker.*, topkeepers.*, topmidfielders.*, topdefenders.*
from players
inner join topattacker on topattacker.PL_ID = players.PL_ID
inner join topdefenders on topdefenders.PL_ID = players.PL_ID
inner join topkeepers on topkeepers.PL_ID = players.PL_ID
inner join topmidfielders on topmidfielders.PL_ID = players.PL_ID
where players.PL_ID = topattacker.PL_ID and
players.PL_ID = topdefenders.PL_ID and
players.PL_ID = topkeepers.PL_ID and
players.PL_ID = topmidfielders.PL_ID
group by players.PL_ID
答案 0 :(得分:0)
问题在于某些表具有相同的名称。例如,您有try:
room = Room.objects.create(...)
Match.objects.create(room=room, ...)
except:
print('Catch exception here...')
和players.PL_ID
。
由于您正在使用topattacker.PL_ID
,因此将从所有表中获取所有PL_ID。在此平台上,您不能有多个具有相同名称的列。
要解决此问题,请删除所有.*
并列出您需要的每一列。
除特别查询外,几乎在所有情况下都建议这样做。
答案 1 :(得分:0)
您只需要在select中选择显式列名,而不是在表中。*
.*
如果您不使用聚集功能,则不需要分组,但又可以区分,当已经具有相等的加入条件时,也不需要