【问题标题】:Php and sql queryphp和sql查询
【发布时间】:2016-07-19 17:08:31
【问题描述】:

我想知道他们是否可以帮助我,因为我的 sql 和 php 查询有问题,我需要添加每个供应商销售的单位数量,我限制记录的数量仅作为证据显示,因为数据库包含数百条记录。 我收到此错误:

警告:odbc_exec (): SQL 错误:[TOD] [ODBC] [GENESIS] 非聚合需要 GROUP BY 表达式。

警告:odbc_fetch_row() 期望参数 1 是资源,在

中给出布尔值

我在互联网上搜索了很多,但在尝试将它们与功能 group by 分组时,仍然给我同样的错误。 我留下了我的部分代码,希望你能帮助并提前感谢!

 <?php 
  $sqlVend = "select top 10 VEN_LLAVE, VEN_NOMBRE, VDOC_UDS,
                     sum(VDOC_UDS) as suma 
              from VENVEN, VENDOC 
              where VENVEN.VEN_LLAVE = VENDOC.VDOC_VEND group by VEN_LLAVE";
  $resVend = odbc_exec($cone, $sqlVend);
  while (odbc_fetch_row($resVend)) {
    # code...
?>
<tr>
  <td><?php echo odbc_result($resVend, 'VEN_LLAVE') ?></td>
  <td><?php echo odbc_result($resVend, 'VEN_NOMBRE') ?></td>
  <td><?php echo odbc_result($resVend, 'suma') ?></td>

</tr>
<?php } ?>

【问题讨论】:

  • 在您的问题上正确的 DBMS 标签可能会产生更快的结果。
  • 我没有看到您尝试在哪里使用 GROUP BY。
  • 我已经改了,谢谢你的帮助
  • 如果这实际上适用于 SQL-Server,您将需要所有未聚合的列都在 GROUP BY 子句中。例如GROUP BY VEN_LLAVE, VEN_NOMBRE
  • @bjones,首先非常感谢您的回答。我用你的答案修改了查询,显然如果它只工作了这个需要太长时间才能显示,事实上即使它显示,因为许多记录,应该只计算前 10 名卖家的单位。你能再帮我一次吗?感谢您的帮助朋友。

标签: php sql-server database odbc


【解决方案1】:

我再次修改了GROUP BY 子句以仅包含VEN_LLAVE, VEN_NOMBRE。您不需要VDOC_UDS,因为它正在与SUM() 聚合。

SELECT TOP 10 VEN_LLAVE, VEN_NOMBRE,
              SUM(VDOC_UDS) as Suma 
FROM VENVEN, VENDOC 
WHERE VENVEN.VEN_LLAVE = VENDOC.VDOC_VEND 
GROUP BY VEN_LLAVE, VEN_NOMBRE

【讨论】:

  • ,再次感谢好友。但是当我再次删除 VDOC_UDS 时出现错误。我按照您的建议放置代码,但它不起作用。您需要更多信息吗?或者我能做什么?
  • @bjones - 您在帖子中提到但从不将 VDOC_UDSSELECT 子句中删除。
  • @Byte 检查更新的答案。虽然我不确定这会解决这两个错误。
猜你喜欢
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多