[mysql] Gdzie tu jest błąd ?

0

[code]
Błąd

zapytanie SQL :

SELECT *
FROM cat, cat_tree, links
WHERE (

cat_tree.first =3 AND cat_tree.depth =1 AND cat_tree.type =1
) AND (
cat_tree.second = cat.idc
)
GROUP BY links.idc
ORDER BY count( links.idc ) DESC
LIMIT 3

MySQL zwrócił komunikat:

#1111 - Invalid use of group function
[/code]

Gdzie tu jest błąd ?

0

Troche zamotałeś :)

SELECT *, count( links.idc ) as col
FROM cat, cat_tree, links
WHERE cat_tree.first =3 AND cat_tree.depth =1 AND cat_tree.type =1 AND cat_tree.second = cat.idc
GROUP BY links.idc
ORDER BY col DESC
LIMIT 3

  1. Po co Ci te nawiasy, jeśli wszędzie są AND-y
  2. Wiem, że MySql ma włąśnie problemy przy sortowaniu poprzez kolumny dynamiczne, typu COUNT()
0

o dziwo u mnie przeszło takie zapytanie... ale ogólnie rzecz biorąc w komplecie do group by powinno być w select jakieś count, max, avg - coś, co działa na zbiorach danych.

ale skoro mowa o "optymalizacji" zapytania:

SELECT *, count(links.idc) AS col
FROM cat c, cat_tree ct, links l
WHERE ct.first =3 AND ct.depth =1 AND ct.type =1 AND ct.second = c.idc
GROUP BY l.idc
ORDER BY col DESC
LIMIT 3

1 użytkowników online, w tym zalogowanych: 0, gości: 1