Anzahl gleicher IPs

Gut, dann hab ich's falsch verstanden:
Code:
SELECT
        COUNT(*) AS `count`
  FROM
        […]
  GROUP BY
        `ip`
  HAVING
        `count` > 1
  ORDER BY
        `count` DESC
 
Fehler
SQL-Befehl:


SELECT user, ip
FROM ips
WHERE ip
IN (
SELECT ip
FROM ips
GROUP BY ip
HAVING COUNT( ip ) >1
)
LIMIT 0 , 30


#1064 - You have an error in your SQL syntax near 'SELECT ip FROM ips GROUP BY ip HAVING COUNT(ip) > 1) LIMIT 0, 30' at line 2
Diese meldung kommt - gibts noch weitere Ideen? Mit = gehts auch nicht. Sehe ich doch richtig, dass ich jeweils 'ips' in meinen Tabellennamen umändern muss, richtig?
 
daryl hat gesagt.:
Diese meldung kommt - gibts noch weitere Ideen? Mit = gehts auch nicht. Sehe ich doch richtig, dass ich jeweils 'ips' in meinen Tabellennamen umändern muss, richtig?
Das siehst Du richtig.
Mir sieht das nach einer MySQL-Version aus, die noch keine Subqueries kann. Welche MySQL-Version hast Du denn?
 
Wo kann ich die denn sehen? Ich nutze PHPMyAdmin - steht das irgendwo? Die PHP-Version hat ja mein Hoster dort installiert, also habe ich darauf keinen Einfluss, deshalb hoffe ich, dass es auch eine andere Lösung gibt...
 
Direkt unter "Willkommen bei phpMyAdmin" steht bei mir auf dem lokalen System "MySQL 4.1.10a-nt auf localhost als *********@localhost".
Das ist offensichtlich die Versionsnummer von MySQL.
Ohne Subselect sehe ich die Lösung aus meinem ersten Post oder das "manuelle" Ausführen des Subselect in einem seperaten Query. Daraus baust Du Dir dann den String, den Du an Stelle des Subquery einfügst, der ungefähr so aussehen muss:
PHP:
$inString = "'113.41.124.12', '234.34.145.12'";
(Ich habe mal beliebige IPs genommen)
 
Ah ja, meine Version ist MySQL 3.23.58

TUt mir leid, dass ich noch ein Anfänger bin in SQL, aber könntest du es mir dann ma laufschreiben, wie es aussehen würde mit dem separaten Subquery? Also ich denke mal, dass damit der PHP-Code gemeint ist...
 
PHP:
$inString=array();

$res=mysql_query("SELECT ip FROM ips GROUP BY ip HAVING COUNT(ip) >1");

while ($row = mysql_fetch_assoc($res)) {
    $inString[] = "'".$row['ip']."'";
}
$inString = implode(",",$inString);

$res = mysql_query("SELECT user, ip FROM ips WHERE ip IN (".$inString.") LIMIT 0 , 30";

//Deine Schleife zum Auslesen der Ergebnisse
Syntaxfehler sind geschenkt, ich habe hier im Editor getippt.
 
hpvw hat gesagt.:
PHP:
$inString=array();

$res=mysql_query("SELECT ip FROM ips GROUP BY ip HAVING COUNT(ip) >1");

while ($row = mysql_fetch_assoc($res)) {
    $inString[] = "'".$row['ip']."'";
}
$inString = implode(",",$inString);

$res = mysql_query("SELECT user, ip FROM ips WHERE ip IN (".$inString.") LIMIT 0 , 30";

//Deine Schleife zum Auslesen der Ergebnisse
Syntaxfehler sind geschenkt, ich habe hier im Editor getippt.


Genau diesen Code kann ich auch gebrauchen. Nur ich finde den Syntaxfehler nicht.
 
Zurück