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
子句中使用逗号。始终使用明确的 join
s:
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
我的 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
子句中使用逗号。始终使用明确的 join
s:
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