暧昧的左连接?

时间:2010-11-28 12:26:38

标签: mysql join ambiguous

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

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

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

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 *时,查询按预期工作。虽然这不是我将要使用查询的选项。

提前感谢任何回复。

2 个答案:

答案 0 :(得分:3)

使用tablename:

作为模糊列名称的前缀
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是唯一的列名)

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

答案 1 :(得分:1)

您需要为表名提供别名,如下所示。

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)

不确定顶线是否正确,因为我不知道你的表格结构,所以不知道哪个列来自哪里。

希望这会有所帮助。