#1066 - 不是唯一的表/别名:?我该怎么办?

时间:2015-11-29 09:15:57

标签: mysql sql select join inner-join

嗨我在我的sql语句中有一个问题:(我收到错误:

  

#1066 - 不是唯一的表/别名:' VERANSTALTUNG'

这是我的代码:

select VERANSTALTUNG.v_name, V_TYP.typ, RAUM.raumname, GEBEAUTE.gebeaute_name From VERANSTALTUNG
JOIN VERANSTALTUNG on VERANSTALTUNG.v_typ_id=V_TYP.v_typ_id
JOIN VERANSTALTUNG on VERANSTALTUNG.raum_id=RAUM.raum_id
JOIN RAUM on RAUM.gebeaute_id=GEBEAUTE.gebeaute_id

2 个答案:

答案 0 :(得分:2)

这是一个起点。 V1,V2,V3是别名,如果你甚至都需要它们。

您需要在引用表之前引入表(不是在第一个选择行中,而是在选择行之后的连接中)。

换句话说,您可以在选择列列表中引用它们。但是如果它们没有被引入,你就不能在连接中引用它们。

将其带入

之前,您无法引用GEBEAUTE

有两种将其带入

的方法
  • from XXX子句(这是您提供的第一个表格)
  • join XXX子句(带来表2及更高版本)

select VERANSTALTUNG.v_name, V_TYP.typ, RAUM.raumname, GEBEAUTE.gebeaute_name
From VERANSTALTUNG V1
JOIN VERANSTALTUNG V2 on V2. something
JOIN VERANSTALTUNG V3 on V3. something
JOIN RAUM on RAUM.gebeaute_id=GEBEAUTE.gebeaute_id -- error here still, see below

请注意,您仍然没有带来 V_TYPGEBEAUTE

这是一团糟。不是一团糟,而是朝着幸福的方向前进。

以下是它的简单说明

line1:   select A.col1,B.col2,C.col3
line2:   from table1 A
line3:   join table2 B on B.blahblah=A.something
line4:   join table3 C on C.typ_id=D.month_id

直到第4行看起来不错。因为表格D尚未带入

答案 1 :(得分:1)

您应该在join中使用VERANSTALTUNG表的另一个别名:

    select VERANSTALTUNG.v_name, V_TYP.typ, RAUM.raumname, GEBEAUTE.gebeaute_name 
    From VERANSTALTUNG
    JOIN VERANSTALTUNG as t1 on t1.v_typ_id=V_TYP.v_typ_id
    JOIN VERANSTALTUNG as t2 on t2.raum_id=RAUM.raum_id
    JOIN RAUM on RAUM.gebeaute_id=GEBEAUTE.gebeaute_id