error in php door mysql (Invalid use of group function)
Ik krijg de error: Invalid use of group function
Dit is een MySQL error... Waar ligt het dan aan? Ik heb al zitten zoeken, maar krijg het niet opgelost. (is dit de juiste categorie? Het is ook deels php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$result = mysql_query("SELECT COUNT(name),`rank`,`ref` FROM login WHERE `rank`>='4' and `ref`!='' GROUP BY `ref` ORDER BY COUNT(name) DESC LIMIT 0,10") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
echo"<tr>
<td width=\"150\" class=\"cell\"><a href=\"view_profile.php?name=".htmlentities($row['ref'])."\" onFocus=\"if(this.blur)this.blur()\">".htmlentities($row['ref'])."</td>
<td width=\"150\" class=\"cell\">".htmlentities($row['COUNT(name)'])."</td>
<td width=\"150\" class=\"cell\">$ ".htmlentities(number_format($row['COUNT(name)'] * 10000)).",-</td>
</tr>";
} // while
?>
$result = mysql_query("SELECT COUNT(name),`rank`,`ref` FROM login WHERE `rank`>='4' and `ref`!='' GROUP BY `ref` ORDER BY COUNT(name) DESC LIMIT 0,10") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
echo"<tr>
<td width=\"150\" class=\"cell\"><a href=\"view_profile.php?name=".htmlentities($row['ref'])."\" onFocus=\"if(this.blur)this.blur()\">".htmlentities($row['ref'])."</td>
<td width=\"150\" class=\"cell\">".htmlentities($row['COUNT(name)'])."</td>
<td width=\"150\" class=\"cell\">$ ".htmlentities(number_format($row['COUNT(name)'] * 10000)).",-</td>
</tr>";
} // while
?>
Voor de luie mensen onder ons, dit is de query waar het om gaat:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT
COUNT(name),
`rank`,
`ref`
FROM
login
WHERE
`rank`>='4'
and
`ref`!=''
GROUP BY
`ref`
ORDER BY
COUNT(name) DESC
LIMIT 0,10
COUNT(name),
`rank`,
`ref`
FROM
login
WHERE
`rank`>='4'
and
`ref`!=''
GROUP BY
`ref`
ORDER BY
COUNT(name) DESC
LIMIT 0,10
Gewijzigd op 01/01/1970 01:00:00 door PHP erik
Ik moet die drie selecteren.
+ de rank moet groter zijn dan 4
+ ref mag niet gelijk zijn aan '' (niets)
+ het moet gegroepeerd worden op ref
+ gerangschikt op count(name) (desc) met limit 0,10
Hoe moet het wel??
Iemand die het kan uitleggen?
Kun je je datamodel geven? En snap je wel hoe GROUP BY werkt en COUNT? Want de dingen die je nu zegt zijn nog steeds niet erg logisch.
In jou geval
GROUP BY rank,ref
Voor de rest zal ik de count een alias geven, is prettiger bij het opvragen/uitlezen
En backtick -> ` horen niet thuis in SQL dus weg er mee
Het zou zo moeten zijn dat er een lijst wordt weergegeven met de names die het meeste refs hebben (gerangschikt: desc).
Op mijn vorige server draaide ik dit ook EN werkte het...
@Noppes:
Ik heb group by rank, ref gezet (rank er dus bij) en die ` tekens weggedaan.
Nog steeds krijg ik die error...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$result = mysql_query("SELECT COUNT(name),rank,ref FROM login WHERE rank>='4' and ref!='' GROUP BY rank,ref ORDER BY COUNT(name) DESC LIMIT 0,10") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
echo"<tr>
<td width=\"150\" class=\"cell\"><a href=\"view_profile.php?name=".htmlentities($row['ref'])."\" onFocus=\"if(this.blur)this.blur()\">".htmlentities($row['ref'])."</td>
<td width=\"150\" class=\"cell\">".htmlentities($row['COUNT(name)'])."</td>
<td width=\"150\" class=\"cell\">$ ".htmlentities(number_format($row['COUNT(name)'] * 10000)).",-</td>
</tr>";
} // while
?>
$result = mysql_query("SELECT COUNT(name),rank,ref FROM login WHERE rank>='4' and ref!='' GROUP BY rank,ref ORDER BY COUNT(name) DESC LIMIT 0,10") or die(mysql_error());
while($row = mysql_fetch_array( $result )) {
echo"<tr>
<td width=\"150\" class=\"cell\"><a href=\"view_profile.php?name=".htmlentities($row['ref'])."\" onFocus=\"if(this.blur)this.blur()\">".htmlentities($row['ref'])."</td>
<td width=\"150\" class=\"cell\">".htmlentities($row['COUNT(name)'])."</td>
<td width=\"150\" class=\"cell\">$ ".htmlentities(number_format($row['COUNT(name)'] * 10000)).",-</td>
</tr>";
} // while
?>
Is er niemand die me kan helpen???
Gewijzigd op 01/01/1970 01:00:00 door Ruben Vanhoeyveld
MM zeker weer een grapje van MySql rename het veld ref eens naar iets anders en probeer het dan nog eens
hmm zal eens proberen...
SELECT COUNT(ref) AS refs, naam
FROM login
GROUP BY naam
ORDER BY refs DESC
LIMIT 10
Gewijzigd op 01/01/1970 01:00:00 door Ruben Vanhoeyveld
Als de rank groter moet zijn dan 4 zet je dat gewoon in de WHERE, dat hoeft je niet te selecteren.
is dat zo? :o
SELECT COUNT(ref) AS refs, naam
FROM login
WHERE rank >= 4
GROUP BY naam
ORDER BY refs DESC
LIMIT 10
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Ik heb nu:
Code (php)
1
2
3
2
3
<?php
$result = mysql_query("SELECT COUNT(ref) AS refs, name FROM login GROUP BY name WHERE rank >= 4 ORDER BY refs DESC LIMIT 10") or die(mysql_error());
?>
$result = mysql_query("SELECT COUNT(ref) AS refs, name FROM login GROUP BY name WHERE rank >= 4 ORDER BY refs DESC LIMIT 10") or die(mysql_error());
?>
maar krijg de error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE rank >= 4 ORDER BY refs DESC LIMIT 10' at line 1
Ruben Vanhoeyveld schreef op 22.10.2008 20:20:
SQL Beginnershandleidingis dat zo? :o
Het is misschien niet zo'n heel gek idee om deze handleiding eens door te lezen. De vragen die je stelt behoren echt tot de basiskennis...
ps. Over de fout hierboven: WHERE hoort voor GROUP BY.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Query-voorbeeld is aangepast ;-)
Ik begin stilaan te denken dat mijn versie van MySQL een oudere is... Op mijn vorige server ging het wel met een andere database...
ps. Maar lees nu die handleiding die ik gaf eens even. Daar had je dit allemaal ook uit kunnen halen...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Het zou handig zijn als je behalve de error ook even je query post.