在mysql中列不明确?

时间:2013-11-19 22:54:06

标签: mysql

我在过去6个月内运行此查询,但在几台服务器上没有问题,但今天出现了错误?

 error_message: Database query failed: Column 'account_id' in field list is ambiguous

列account_id不明确?

$sql_query = "SELECT pricenotifier_criteria.criteria_id , pricenotifier_criteria.`event_id` , pricenotifier_criteria.`ticket_id` , pricenotifier_criteria.`criteria` ,pricenotifier_criteria.account_id ,seller_ids.user_id,seller_ids.seller_id 
FROM pricenotifier_criteria 
INNER JOIN seller_ids 
ON ( pricenotifier_criteria.account_id = seller_ids.account_id ) 
INNER JOIN pricenotifier_users 
ON (pricenotifier_criteria.user_id = pricenotifier_users.user_id ) 
INNER JOIN pricenotifier_pricing_table 
ON ( pricenotifier_users.pricing_id = pricenotifier_pricing_table.pricing_id ) 
WHERE status=1 AND pricenotifier_pricing_table.processing_time = 15 
AND pricenotifier_criteria.user_id = 339  
ORDER BY pricenotifier_criteria.event_id  
LIMIT 2000 
OFFSET 0";

我曾尝试在phpmyadmin的sql中运行此查询,但没有出现错误?如果我通过PHP运行这比我得到的错误

要做的事情

我真的很遗憾在我运行此查询的页面中我调用了另一个页面,其他程序员没有提到表格prefrix这就是为什么我们收到此错误但所有回复的人都是对的所以每个人都有几乎真实的答案(为什么会出现ambigius错误)。我在这里发布它是因为我确定我的查询没有任何暧昧,我是对的但是另一个文件正在运行一些查询并且有错误。

3 个答案:

答案 0 :(得分:0)

清洁版同样的东西......

 SELECT c.criteria_id 
      , c.event_id
      , c.ticket_id
      , c.criteria
      , c.account_id 
      , s.user_id
      , s.seller_id 
   FROM pricenotifier_criteria c
   JOIN seller_ids s
     ON s.account_id = c.account_id
   JOIN pricenotifier_users u
     ON u.user_id = c.user_id 
   JOIN pricenotifier_pricing_table g
     ON g.pricing_id = u.pricing_id 
  WHERE status = 1 
    AND g.processing_time = 15 
    AND c.user_id = 339  
  ORDER 
     BY c.event_id  
  LIMIT 2000;

答案 1 :(得分:0)

我敢打赌你的php代码只选择account_id而没有表格前缀pricenotifier_criteriaseller_ids。由于两个表都包含字段account_id,因此如果没有表前缀,这将是不明确的。

答案 2 :(得分:0)

此错误:

  

error_message:数据库查询失败:字段列表中的列'account_id'不明确

表示account_id是2个或更多表的字段。举个例子:

SELECT account_id, other_things
FROM table_account
INNER JOIN table_account2 ON (table_account.account_id = table_account2.account_id)

account_id是2个表格的字段:table_accounttable_account2。然后,这是不明确的,因为应该从哪个表中选择account_id

正如@strawberry所述,在您向我们展示的查询中,唯一可能含糊不清的字段是status。如果您确实遇到此问题,请确保在查询中为所有字段添加前缀,如下所示:table.field_name。然后,这将避免这种错误。