[MySQL] COUNT(*) direkt in WHERE mit einbeziehen

27o8

abgemeldet
2 Mai 2006
9.028
933
Ich steh grad volla uf dem Schlauch und versteh es net 8O
Code:
SELECT 
          `login_ip`,COUNT(*) AS `anzahl` 
FROM 
          `vms_kontodaten` 
WHERE 
         `anzahl` > 1 
GROUP BY
         `login_ip` 
ORDER BY 
         `anzahl` DESC
Wenn ich das ausfführe kommt immmer
Unknown column 'anzahl' in 'where clause'


Was es bedeutet weis ich... aber wieso kommt es? Ich habe doch das anzahl vorher mit COUNT(*) definiert, ich bin mir ziemlich sicher das ich es so schonmal gemacht hatte und es funktionierte :-?
 

theHacker

sieht vor lauter Ads, den Content nicht mehr
Teammitglied
ID: 69505
L
20 April 2006
22.643
1.280
Felder, die du vorne mit AS umbenennst, sind hinten bei WHERE und ORDER trotzdem unbekannt. Keine Ahnung ob eine/welche MySQL-Version das unterstützt, aber wenn du
Code:
[FONT=Courier New][B][COLOR=#9932cc]SELECT[/COLOR][/B]
  `login_ip`, [B][COLOR=#9932cc]COUNT[/COLOR][/B][COLOR=#9932cc]([/COLOR]*[COLOR=#9932cc])[/COLOR] [B][COLOR=#9932cc]AS[/COLOR][/B] `anzahl`
[B][COLOR=#9932cc]FROM[/COLOR][/B]
 `vms_kontodaten`
[B][COLOR=#9932cc]WHERE[/COLOR][/B]
  [B][COLOR=#9932cc]COUNT[/COLOR][/B][COLOR=#9932cc]([/COLOR]*[COLOR=#9932cc])[/COLOR] > 1
[B][COLOR=#9932cc]GROUP[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B]
  `login_ip`
[B][COLOR=#9932cc]ORDER[/COLOR][/B] [B][COLOR=#9932cc]BY[/COLOR][/B]
  [B][COLOR=#9932cc]COUNT[/COLOR][/B][COLOR=#9932cc]([/COLOR]*[COLOR=#9932cc])[/COLOR] [B][COLOR=#9932cc]DESC[/COLOR][/B][/FONT]
machst, müsste es gehen.

edit:
Ich hab einfach search&replace gemacht, aber wo ich das so grade mit dem COUNT(*) im WHERE und ORDER BY seh.... probier mal, obs so geht. Sicher bin ich mir grade nimmer :biggrin:
 

Astrodan

Gamma Cephei
ID: 119839
L
10 Dezember 2006
1.113
209
Soweit ich mich erinnern kann an die zeit, als ich auch einmal so etwas vorhabe, kann man in der WHERE-Klausel keine Funktion drin haben.

Sollte also tHs Code nicht funktionieren, probier mal statt dem WHERE ein HAVING zu verwenden. Von der Funktion her ist das meines Wissens und Erinnerungsvermögens her das gleiche, erlaubt aber das Anwenden von Funktionen.
 

27o8

abgemeldet
2 Mai 2006
9.028
933
Also bei theHackers Vorschlag krieg ich immer ein
"Invalid use of group function" zurück ;)


Code:
SELECT 
          `login_ip`, COUNT(*) AS `anzahl` 
FROM  
          `vms_kontodaten` 
GROUP BY 
           `login_ip` 
HAVING 
           COUNT(*) > 1 
ORDER BY 
           COUNT(*) DESC
Das funktioniert 8)

Gruß
Gremlin
 

chrissel

Woohooo!
ID: 211634
L
20 April 2006
4.489
472
Ich habe auch eine VMS DB auf meinem Server und habe es direkt mal ausprobiert ;)
Leider gibt es wohl noch ein Problem mit dem Gruppieren.

Code:
SELECT `login_ip` , COUNT( * ) AS `anzahl`
FROM `vms_kontodaten`
WHERE COUNT( * ) >1
GROUP BY `login_ip`
ORDER BY COUNT( * ) DESC
LIMIT 0 , 30 

#1111 - Invalid use of group function

Ich gehe mal stark davon aus, dass es das gleiche Problem bei gremlin gibt ;)

EDIT: Ah mist, zu spät :p aber man habe ich lange getestet :p
 

ice-breaker

return void
ID: 93995
L
27 April 2006
6.258
585
da das Where vor dem Group by ausgeführt wird ergibt das keinen sinn ;)
Ihr zählt ALLE zeilen und wolltest das "verknüpfen" mit der login_ip?
Das bedeutet ihr verknüpft eine Zeilen basierte Ausgabe mit einer Ausgabe.
Das Count muss also auf die fertige Gruppierung angewendet, um herauszufinden wie viele Ergebniszeilen in der Gruppe sind, so wie gremlin es formuliert hat.
 

ice-breaker

return void
ID: 93995
L
27 April 2006
6.258
585
sogar bei MySQL-Client-Version: 5.0.32 welche ich auch nutze, bei mir gehts bei ihm nicht. Woran kann denn das liegen? 8O

sntaktisch korrekt, alle ausgelesen spalten gehören zu der gruppierung, hmm, liegt es vllt am order by ? sollte zwar net, aber mit having ohne group by denke ich sollte es doch funzen, vllt hat er da ja irgendwelche probleme beim verstehen
 

27o8

abgemeldet
2 Mai 2006
9.028
933
Ohne ORDER BY funktioniert es nun auch bei den anderen :) find ich nur komisch das es sogar bei der gleichen MySQL Version Unterschiede gibt 8O danke dir.
 

chrissel

Woohooo!
ID: 211634
L
20 April 2006
4.489
472
[..]find ich nur komisch das es sogar bei der gleichen MySQL Version Unterschiede gibt[..]

Ich denke mal du hast es bei dir lokal auf einem Windows PC getestet?
Kann ja sein, dass es Unterschiede von MySQL auf Windows und Linux Rechnern gibt ;) Wäre der einzige, mir erklärliche Grund, warum das auf einem geht, auf dem anderen nicht.
 

ice-breaker

return void
ID: 93995
L
27 April 2006
6.258
585
Ohne ORDER BY funktioniert es nun auch bei den anderen :) find ich nur komisch das es sogar bei der gleichen MySQL Version Unterschiede gibt 8O danke dir.
Tja, Murphys Law^^
In wieweit denn genau die gleichen Versionen?

Kann ja sein, dass es Unterschiede von MySQL auf Windows und Linux Rechnern gibt ;) Wäre der einzige, mir erklärliche Grund, warum das auf einem geht, auf dem anderen nicht.
Sollte eigentlich keine Unterschiede geben. Und erklären kannst du bei Datenbanken oft vieles nicht, gerade wenn es an den Query Optimizer geht der nen Query total verschlimmbessert
 

27o8

abgemeldet
2 Mai 2006
9.028
933
Hi,
habe es unter Linux getestet :) ich gehe mal davon aus das der Server von demjenigen bei dem es nicht lief auch linux ist (ist ja schon fast Standard ;))

In wieweit denn genau die gleichen Versionen?
verwendete MySQL Version in beiden Fällen: 5.0.32