繁体   English   中英

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

[英]Not a unique table/alias stock:

我有以下查询:

$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我的管理员我得到错误不是一个独特的表/别名股票;

有人可以建议吗?

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

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

在第2行你有......

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

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

  1. 这就是混合语法( ,JOIN ),这是凌乱。 坚持JOIN
  2. 这意味着在查询中提到TWOrder和Stock两次

如果您真的需要在一个查询中多次包含这些表,则需要为它们指定别名,以便它们可以相互分离。

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

FROM `scanners`


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM