连接四个具有非同类属性的视图表时出错

时间:2019-04-11 19:35:57

标签: mysql

我们一直试图根据不同的属性将三个视图表连接在一起,并且由于出现重复项而出现了一些错误。 我们的代码如下所示:

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

2 个答案:

答案 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中选择显式列名,而不是在表中。*

.*

如果您不使用聚集功能,则不需要分组,但又可以区分,当已经具有相等的加入条件时,也不需要