我有一个使用3表的连接查询,但是我遇到了这个问题在where子句不明确的列'id_f'
$id_f=$_GET['id_f'];
$query="SELECT *, s.name AS van, st.name AS naar, p.titl, p.vname
FROM p1_users, f_confirm AS v
INNER JOIN s_steden AS s ON v.van = s.id
INNER JOIN s_steden AS st ON v.naar = st.id
INNER JOIN p1_users AS p ON v.id_f = p.id_f
AND DATE_FORMAT(date,'%Y-%c-%d')WHERE id_f='$id_f'";
$result=mysql_query($query)or die('Wrong query : ' . mysql_error());
$row=mysql_fetch_assoc($result);
任何人都可以帮忙吗?
答案 0 :(得分:3)
这意味着,两个或多个表包含名为“id_f”的列(在您的情况下为p1_users和f_confirm)。您需要指定它与哪个表相关,如下所示:
AND DATE_FORMAT(date,'%Y-%c-%d')WHERE p.id_f='$id_f'";
答案 1 :(得分:1)
您需要在where子句中使用v.id_f
或p.id_f
,因为两个表具有该名称的列,因此您需要消除歧义。
在这种情况下,当您使用inner join
时,使用哪一个并不重要。
如果您使用natural join
,这可能不是必需的,但我不建议您使用这些。
答案 2 :(得分:1)
不明确的字段是查询中的一个字段,该字段位于两个或多个表(或子查询)中。
你有两种选择。
在您的示例中,在INNER JOIN语句中使用“v.id_f = p.id_f”的别名,但是在WHERE子句中,您会忘记别名。
答案 3 :(得分:0)
问题出在WHERE子句中,在DATE_FORMAT之后编写了id_f ='$ id_f',但是在此查询的其他表中有此列(id_f)。所以数据库不知道你真正想要使用的表格。