SQL SELECT COUNT GROUP BY - 错误

SQL SELECT COUNT GROUP BY - error

我的 sql 语句有问题,我有两个 table(ogrenci 和 taksit)。我正在尝试计算它们为零的 taksits 的数量,并将它们分组 KategoriID.KategoriID 在 ogrenci 和 taksit tables 中,而 odendi 仅在 taksit table 中。我找不到错误在哪里。 我的sql如下

$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"];

}

JOIN 不正确,WHERE 子句也不正确。试试这个:

$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 以便于阅读:

  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

您错过了此处的语法,第二个 table 的名称后不应该有 and。语法应为:

SELECT ....
FROM Table1 INNER JOIN Table2 ON ....

所以正确的查询是:

SELECT KategoriID, ad, odendi, COUNT(odendi) 
FROM ogrenci INNER JOIN 
      taksit ON ogrenci.KategoriID = taksit.KategoriID 
WHERE odendi=0 
GROUP BY KategoriID

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

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;

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

我不明白为什么在分组时不添加组列表中的所有列...试试这个:

SELECT ogrenci.KategoriID, ad, odendi, COUNT(odendi) 
FROM ogrenci INNER JOIN 
  taksit ON ogrenci.KategoriID = taksit.KategoriID 
WHERE odendi=0 
GROUP BY KategoriID, ad, odendi