【问题标题】:Ambiguous left join?模棱两可的左加入?
【发布时间】:2010-11-28 12:26:38
【问题描述】:

所以我正在努力解决我猜测的一个非常简单的问题。我搜索了一下,但到目前为止我找到的解决方案都没有解决我的问题。

SELECT arrangement_ID, hva, dato 
FROM tt_arrangement LEFT JOIN (tt_vaktliste_vakt)
ON (tt_arrangement.arrangement_ID = tt_vaktliste_vakt.arrangement_ID)

这自然会产生“模糊错误”,因为 tt_arrangement 和 tt_vaktliste_vakt 中都存在“arrangement_ID”列。认为这很容易解决,我进行了以下更改:

SELECT **arrangement_ID.tt_arrangement**, hva, dato 
FROM tt_arrangement LEFT JOIN (tt_vaktliste_vakt)
ON (tt_arrangement.arrangement_ID = tt_vaktliste_vakt.arrangement_ID)

但是,这会产生错误“列不存在”。这就是我卡住的地方。 不确定它是否重要,但是当使用 SELECT * 时,查询按预期工作。尽管对于我将要使用查询的内容来说,这并不是一个真正的选择。

提前感谢您的任何回复。

【问题讨论】:

  • 你把它倒过来了——它应该是 [tablename].[columnname] 而不是 [columnname].[tablename]。
  • 哈哈,谢谢。猜我已经工作太久了,开始盲目编码;)

标签: mysql join ambiguous


【解决方案1】:

在不明确的列名前加上表名:

SELECT t_arrangement.arrangement_ID, hva, dato  
FROM tt_arrangement LEFT JOIN (tt_vaktliste_vakt) 
ON (tt_arrangement.arrangement_ID = tt_vaktliste_vakt.arrangement_ID) 

(假设 hva、dato 是唯一的列名)

(您也可以使用别名,但仍需要在不明确的列名前加上别名)

【讨论】:

    【解决方案2】:

    你需要给你的表名一个别名,如下所示。

    SELECT a.arrangement_ID, a.hva, a.dato 
    FROM tt_arrangement  AS a
    LEFT JOIN tt_vaktliste_vakt AS v
    ON (a.arrangement_ID = v.arrangement_ID)
    

    不确定上面的行是否正确,因为我不知道你的表结构,所以不知道哪一列来自哪里。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2011-04-20
      • 2011-09-07
      • 2011-01-09
      • 2010-11-18
      • 1970-01-01
      相关资源
      最近更新 更多