SELECT schachteln
Hallo,
Ich habe ein kleines Problem mit meinem MySQL-Server. Meines Erachtens ist
diese Abfrage richtig:
SELECT avg FROM (SELECT AVG(vote) AS avg, COUNT(*) AS count FROM votes GROUP
BY foto) AS t1 WHERE count>10 ORDER BY avg DESC, COUNT desc
Der MySQL-Server sagt dazu aber nur das:
#1064 - 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
'SELECT AVG( vote ) AS avg , COUNT( * ) AS count FROM votes GROU
Ich wäre jedem sehr dankbar, der mir bei diesem Problem helfen kann, denn
ich weiß echt nicht mehr weiter.
Heiko
Re: SELECT schachteln
Heiko Richter wrote:
> Der MySQL-Server sagt dazu aber nur das:
>
> #1064 - 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
> 'SELECT AVG( vote ) AS avg , COUNT( * ) AS count FROM votes GROU
Welche MySQL Version?
Vermutung: du versuchst 4.1 Features (Subselects) in einer 4.0 oder
3.23 Installation?
--
Hartmut Holzgraefe, Senior Support Engineer .
MySQL AB, www.mysql.com
Re: SELECT schachteln
Heiko Richter wrote:
> Hallo,
>
> Ich habe ein kleines Problem mit meinem MySQL-Server. Meines Erachtens ist
> diese Abfrage richtig:
>
> SELECT avg FROM (SELECT AVG(vote) AS avg, COUNT(*) AS count FROM votes GROUP
> BY foto) AS t1 WHERE count>10 ORDER BY avg DESC, COUNT desc
>
> Der MySQL-Server sagt dazu aber nur das:
>
> #1064 - 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
> 'SELECT AVG( vote ) AS avg , COUNT( * ) AS count FROM votes GROU
>
Und? *Hast* Du das Manual gelesen? Was sagt es zu dieser SELECT-Syntax?
Re: SELECT schachteln
Heiko Richter schrieb:
> Hallo,
>
> Ich habe ein kleines Problem mit meinem MySQL-Server. Meines Erachtens ist
> diese Abfrage richtig:
>
> SELECT avg FROM (SELECT AVG(vote) AS avg, COUNT(*) AS count FROM votes GROUP
> BY foto) AS t1 WHERE count>10 ORDER BY avg DESC, COUNT desc
>
> Der MySQL-Server sagt dazu aber nur das:
>
> #1064 - 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
> 'SELECT AVG( vote ) AS avg , COUNT( * ) AS count FROM votes GROU
>
> Ich wäre jedem sehr dankbar, der mir bei diesem Problem helfen kann, denn
> ich weiß echt nicht mehr weiter.
>
> Heiko
>
>
Hallo,
selbst wenn die Mysql-Version diesen Syntax unterstützt, funkioniert es
so nicht, denn, wenn wir uns das Selcet mal etwas vereinfacht anschauen:
SELECT avg FROM t1
WHERE count>10 ORDER BY avg DESC, COUNT desc
wird klar, dass die Spalte count garnicht vorhanden ist. Also wenn
dann
SELECT avg, count FROM (SELECT AVG(vote) AS avg, COUNT(*) AS count FROM
votes GROUP
> BY foto) AS t1 WHERE count>10 ORDER BY avg DESC, COUNT desc
Oder aber:
SELECT AVG(vote) AS avg, COUNT(*) as count FROM votes
GROUP BY foto
having count(*) > 10
ORDER BY avg DESC, COUNT desc
Dann braucht man keinen Innerselect, gell.
Michael
Re: SELECT schachteln
Michael König wrote:
>> SELECT avg FROM (SELECT AVG(vote) AS avg, COUNT(*) AS count FROM votes
>> GROUP BY foto) AS t1 WHERE count>10 ORDER BY avg DESC, COUNT desc
....
> selbst wenn die Mysql-Version diesen Syntax unterstützt, funkioniert es
> so nicht, denn, wenn wir uns das Selcet mal etwas vereinfacht anschauen:
>
> SELECT avg FROM t1
> WHERE count>10 ORDER BY avg DESC, COUNT desc
>
> wird klar, dass die Spalte count garnicht vorhanden ist.
Natürlich ist die Spalte vorhanden, da sie in der Derived Table
berechnet wird. Und ein sortieren nach einer Spalte, die nicht in der
Select-Liste auftaucht, geht laut Standard SQL auch.
Allerdings ist eine Spalte mit dem Namen AVG oder COUNT ziemlicher Unsinn.
> Also wenn dann
>
> SELECT avg, count FROM (SELECT AVG(vote) AS avg, COUNT(*) AS count FROM
> votes GROUP
> > BY foto) AS t1 WHERE count>10 ORDER BY avg DESC, COUNT desc
>
> Oder aber:
>
> SELECT AVG(vote) AS avg, COUNT(*) as count FROM votes
> GROUP BY foto
> having count(*) > 10
> ORDER BY avg DESC, COUNT desc
>
> Dann braucht man keinen Innerselect, gell.
Gibt aber eine zweite Spalte in der Ergebnismenge.
Ich hoffe ja, das der OP die Abfrage nur vereinfacht hat, da das
Ergebnis sonst ziemlich sinnfrei ist...
Dieter