我有这个选择查询,直到我执行内连接才能正常工作。
$id = (int) $_GET['id'];
$data = mysql_query("
SELECT
events.start_datetime,
events.EVENT_NAME,
events.START_TIME,
events.END_TIME,
events.VENUE_LOCATION,
venues.VENUE_NAME
FROM
events
INNER JOIN venues
ON events.VENUE_LOCATION = venues.ID
WHERE
id = ".$id) or die(mysql_error());
$id
变量是这样的,查询根据url加载来自行的数据(即:page.php?id = 1)。
知道什么是错的吗?感谢
答案 0 :(得分:2)
在WHERE子句中,将id
更改为events.id
或venues.id
,无论您的意思是什么。不幸的是,MySQL或我都无法猜出你的意思。
答案 1 :(得分:1)
场地也可能有一个id字段,所以你需要指定events.id
,而不仅仅是id
,即
$id = (int) $_GET['id'];
$data = mysql_query("
SELECT
events.start_datetime,
events.EVENT_NAME,
events.START_TIME,
events.END_TIME,
events.VENUE_LOCATION,
venues.VENUE_NAME
FROM
events
INNER JOIN venues
ON events.VENUE_LOCATION = venues.ID
WHERE
events.id = ".$id) or die(mysql_error());
答案 2 :(得分:1)
我猜表id
中还有一列events
?如果是这样,名称就不明确了,因为MySQL不会知道你是在谈论events.id
还是venues.id
。您没有将其命名为要选择的列之一并不重要。它存在于多个表中,因此您必须告诉它您实际需要哪一个。
答案 3 :(得分:1)
您没有为查询指定使用哪个表中的id,并且两个表都具有列名“id”,因此,它会在where子句不明确的情况下抛出“Column'id'的错误”。因此,通过将带有id的表名放在where子句中来更改查询。
Put either WHERE events.id = ... or WHERE venues.id = ...
答案 4 :(得分:1)
如果列名对于单个表不是唯一的,则必须使用表名(或适当的表别名)对其进行限定。所以,显然id
出现在两个表格中。从描述中,听起来好像venues
是添加的表,所以(在这里猜测)你可能需要在WHERE子句中将其限定为events.id
。
答案 5 :(得分:0)
所以今天我在为WordPress插件构建SQL构建器类时遇到了此错误。当我尝试执行这样的查询时;
SELECT ID,post_author,user_login,post_title,user_login,user_email FROM wp_users INNER JOIN wp_posts USING (post_title)
我发现有关ID的错误模棱两可,所以我进行了一些研究并找出了问题所在。
我要连接的两个表都有一个名为ID的列,由于我没有指定特定的列,因此MYSQL在我要选择的表上感到困惑。
因此,一旦我用wp_post.ID或wp_users.ID替换了ID,错误就消失了。