首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL按错误选择计数组

SQL按错误选择计数组
EN

Stack Overflow用户
提问于 2015-06-08 13:46:35
回答 4查看 1.5K关注 0票数 2

我的sql语句有问题,我有两个表(ogrenci和taksit)。我试着计算出在零的地方,按KategoriID.KategoriID对它们进行分组,它们都是在ogrenci和taksit表中,而odendi只在收表中。我找不到错误在哪里。我的sql如下所示

代码语言:javascript
复制
$sql= mysql_query("SELECT KategoriID, ad, odendi, COUNT(odendi) FROM ogrenci INNER JOIN taksit ON ogrenci.KategoriID = taksit.KategoriID and WHERE odendi=0 GROUP BY KategoriID");
    while($listele = mysql_fetch_array($sql)) 
    {

        $KategoriID = $listele['KategoriID'];
        $ad = $listele["ad"];
        $odendi = $listele["odendi"];

}

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-08 13:48:47

简单规则:永远不要在from子句中使用逗号。始终使用显式joins:

代码语言:javascript
复制
SELECT t.KategoriID, ad, odendi, COUNT(odendi)
FROM taksit t INNER JOIN
     ogrenci o
     ON o.KategoriID = t.KategoriID 
WHERE odendi = 0
GROUP BY t.KategoriID;

您还应该使用表别名并限定所有列名。

票数 0
EN

Stack Overflow用户

发布于 2015-06-08 13:47:51

联接不正确,加上WHERE子句不正确。试试这个:

代码语言:javascript
复制
$sql= mysql_query("SELECT KategoriID, ad, odendi, COUNT(odendi) FROM ogrenci INNER JOIN taksit ON ogrenci.KategoriID = taksit.KategoriID WHERE odendi=0 GROUP BY KategoriID");

下面是格式化的SQL以便于阅读:

代码语言:javascript
复制
  SELECT t.KategoriID, 
         ad, 
         t.odendi, 
         COUNT(t.odendi) 
  FROM ogrenci o
  INNER JOIN taksit t ON o.KategoriID = t.KategoriID 
  WHERE t.odendi = 0 
  GROUP BY t.KategoriID
票数 1
EN

Stack Overflow用户

发布于 2015-06-08 13:48:11

您忽略了这里的语法,在第二个表的名称之后不应该有一个and。语法应该是:

代码语言:javascript
复制
SELECT ....
FROM Table1 INNER JOIN Table2 ON ....

因此,正确的查询将是:

代码语言:javascript
复制
SELECT KategoriID, ad, odendi, COUNT(odendi) 
FROM ogrenci INNER JOIN 
      taksit ON ogrenci.KategoriID = taksit.KategoriID 
WHERE odendi=0 
GROUP BY KategoriID
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30710841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档