不是唯一的表/别名股票:

时间:2011-10-20 15:42:21

标签: php sql

我收到了以下查询:

$sql = "SELECT `scanners`.`KordNo`, `scanners`.`BundleNumber`
  FROM `scanners`, `TWOrder`, `Stock`
  INNER JOIN `TWORDER` ON `scanners`.`KordNo` = `TWOrder`.`KOrdNo`
  AND `scanners`.`Date` = '" . $date . "'
  INNER JOIN `Stock`  ON `TWOrder`.`Product` =`Stock`.`ProductCode`
  AND `Stock`.`ProductGroup` NOT BETWEEN 400 AND 650  
  AND `scanners`.`Scanner` IN (
  ORDER BY `scanners`.`KordNo` ASC";
  foreach($scanner as $x) 
  {$sql .= $x . ",";}
   $sql .= "0);";
  // And query the database
  $result = mysql_query($sql);
  while($row = mysql_fetch_array($result))
  $return[] = $row;
}

当我在php上回应sql我的管理员时我得到的错误不是唯一的表/别名库存;

有人可以建议吗?

2 个答案:

答案 0 :(得分:2)

由于您使用的是显式JOIN,因此请将其他两个表从FROM子句中删除。

...
FROM `scanners`
INNER JOIN `TWORDER` ON `scanners`.`KordNo` = `TWOrder`.`KOrdNo`
...

答案 1 :(得分:0)

第2行你有......

FROM `scanners`, `TWOrder`, `Stock`

然后你有一些INNER JOINs到TWOrder和Stock。

  1. 这是混乱语法(,JOIN),这是混乱的。坚持JOIN
  2. 这意味着在查询中提到TWOrder和Stock两次
  3. 如果你真的需要在一个查询中多次包含这些表,你需要给它们别名,这样它们就可以相互分离。

    但我认为这可能是一个错误,第2行应该只是

    FROM `scanners`
    


    然后,我也不确定你是如何编译的。您有IN (,然后是ORDER BY子句,您可以在其中附加值列表。您应该在ORDER BY之前附加列表,然后在完成循环后附加ORDER BY。