SQL: Datensätze mit neuer IP ausgeben
SQL: Datensätze mit neuer IP ausgeben
Hallihallöchen,
Ich hab (glorreicherweise) einen neuen Counter auf meiner Homepage eingebaut, der nicht mehr jede IP einmal pro tag misst, sondern jede IP immer einträgt. So lässt sich besser verfolgen, was der Besucher auf meiner Seite anschaut und auch lassen sich so besser hits auf bestimmte Seiten zählen.
Allerdings will ich auf meiner Homepage (Startseite) lediglich jede IP einmal pro Tag zählen lassen. Sozusagen will ich alle neuen IPs an einem Tag zählen, und das für alle Tage wiederholen. folgende Spalten sind dabei von Bedeutung: ip - Text (gibt die IP Addresse an.), date - int (gibt den Timestamp an).
Gibt es eine Möglichkeit das mithilfe von SQL direkt abzufragen OHNE dabei meinen Server zu killen?
MfG Naums
Ich hab (glorreicherweise) einen neuen Counter auf meiner Homepage eingebaut, der nicht mehr jede IP einmal pro tag misst, sondern jede IP immer einträgt. So lässt sich besser verfolgen, was der Besucher auf meiner Seite anschaut und auch lassen sich so besser hits auf bestimmte Seiten zählen.
Allerdings will ich auf meiner Homepage (Startseite) lediglich jede IP einmal pro Tag zählen lassen. Sozusagen will ich alle neuen IPs an einem Tag zählen, und das für alle Tage wiederholen. folgende Spalten sind dabei von Bedeutung: ip - Text (gibt die IP Addresse an.), date - int (gibt den Timestamp an).
Gibt es eine Möglichkeit das mithilfe von SQL direkt abzufragen OHNE dabei meinen Server zu killen?
MfG Naums
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: SQL: Datensätze mit neuer IP ausgeben
SELECT DISTINCT ip FROM deinerTabelle WHERE date=heuteOderSo
Das zeigt alle IPs für einen Tag einmal an und
SELECT DISTINCT ip, date FROM deinerTabelle
wird für jeden einzelnen tag die jeweiligen IPs ausgeben.
Das zeigt alle IPs für einen Tag einmal an und
SELECT DISTINCT ip, date FROM deinerTabelle
wird für jeden einzelnen tag die jeweiligen IPs ausgeben.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: SQL: Datensätze mit neuer IP ausgeben
löst das Problem mit den neuen IPs. Aber nicht das mit dem Datum. Theoretisch könnte ich das mit PHP machen, indem ich danach überprüfe ob eine IP schonmal da war und ob das am selben tag war. Ich hab aber die befürchtung, dass der Server damit überlastet sein wird. Schließlich wären das weit mehr als 1000 Abfragen und Berechnungen.
Kann MySQL einen Timestamp in ein Datum verwandeln und danach prüfen, dass die IP am Tag einmalig ist? eigentlich will ich sowas wie:
und für heute:
MfG Naums
Kann MySQL einen Timestamp in ein Datum verwandeln und danach prüfen, dass die IP am Tag einmalig ist? eigentlich will ich sowas wie:
Code: Alles auswählen
SELECT count(id) as id FROM `counter` WHERE { IP AM TAG EINMALIG }
Code: Alles auswählen
SELECT count(id) as id FROM `counter` WHERE `date`=time() AND { IP AM TAG EINMALIG }
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: SQL: Datensätze mit neuer IP ausgeben
Achso, du hast nur nen Timestamp?Aber nicht das mit dem Datum.
Sag das doch!
Probiers aus, 1000 ist jetzt noch keine So große zahl, vorallem nicht für Computer.-. Ich hab aber die befürchtung, dass der Server damit überlastet sein wird. Schließlich wären das weit mehr als 1000 Abfragen und Berechnungen.
Ich hatte bei einem Analyseprogramm die Befürchtung, dass mein Laptop mit den 2 Millionen Datensätzen nicht zurechtkommt, aber am ende gings doch.
Solange so eine Anfrage nur selten erfolgt, ist das Problem noch kleiner.
Du könntest dir aber auch ne eigene Tabelle anlegen, wo du automatisiert alle 24h die Zugriffszahlen updates, morgens um 3 oder so sollte die Nutzung so niedrig sein, das das ohne bedenken geht.
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum
Re: SQL: Datensätze mit neuer IP ausgeben
Die Abfrage wird genau dann ausgeführt, wenn jmd. auf meine Homepage (Startseite) geht. Das war seit dem 09.07.2011 knapp 350 Mal der Fall. Ich habe allerdings die Befürchtung, dass es deutlich mehr wird, sobald die Seite auf ne .de-Domain kommt.
PS: sobald jmd. nachts um 3 auf meine Seite geht, gänge das mit dem Update, allerdings muss das ja net unbedingt sein. Da könnte ich auch den alten Counter drinnen lassen. Den will ich eigentlich aus Performance-gründen loswerden.
PS: sobald jmd. nachts um 3 auf meine Seite geht, gänge das mit dem Update, allerdings muss das ja net unbedingt sein. Da könnte ich auch den alten Counter drinnen lassen. Den will ich eigentlich aus Performance-gründen loswerden.
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: SQL: Datensätze mit neuer IP ausgeben
Wie sieht's umgekehrt aus?naums hat geschrieben:Kann MySQL einen Timestamp in ein Datum verwandeln und danach prüfen, dass die IP am Tag einmalig ist? eigentlich will ich sowas wie:
Ein Tag ist ein Timestamp, der größer ist als die letzte Sekunde des vorherigen Tages und kleiner als die erste Sekunde des nächsten Tages.
Statt also date == heute nimmst Du timestamp > kurzVorHeute and timestamp < kurzNachHeute.
1000 Abfragen pro Seitenaufruf!? Oder pro Tag?
Und wenn das pro Seitenaufruf ist - wie kommen die denn zusammen!?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: SQL: Datensätze mit neuer IP ausgeben
meintest Du sowas?naums hat geschrieben: Kann MySQL einen Timestamp in ein Datum verwandeln und danach prüfen, dass die IP am Tag einmalig ist? eigentlich will ich sowas wie:
MfG NaumsCode: Alles auswählen
SELECT count(id) as id FROM `counter` WHERE { IP AM TAG EINMALIG }
Code: Alles auswählen
SELECT COUNT(id) FROM `counter`WHERE ip = '191.168.0.5' AND DATE(date) = CURDATE();
Re: SQL: Datensätze mit neuer IP ausgeben
Von der Sache her ja.
1. Das funzt leider net. Liefert ein leeres Resultat zurück.
2. Das sucht nur nach EINER ip, ich suche aber jede neue IP. Es darf nie die gleiche IP am gleichen Tag gezählt werden, allerdings muss die gleiche IP am nächsten Tag gezählt werden.
Zusammenzählen ist ne einfache Geschichte in PHP, allerdings will ich den Server wie gesagt nicht killen indem ich den Apache alles Filtern lasse.
MfG naums
1. Das funzt leider net. Liefert ein leeres Resultat zurück.
2. Das sucht nur nach EINER ip, ich suche aber jede neue IP. Es darf nie die gleiche IP am gleichen Tag gezählt werden, allerdings muss die gleiche IP am nächsten Tag gezählt werden.
Zusammenzählen ist ne einfache Geschichte in PHP, allerdings will ich den Server wie gesagt nicht killen indem ich den Apache alles Filtern lasse.

MfG naums
.globl truth
truth:
mov r0, #42
mov pc, lr
truth:
mov r0, #42
mov pc, lr
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: SQL: Datensätze mit neuer IP ausgeben
Schau Dir mal "ORDER BY" an. Genaue Syntax mit Count müsste ich selbst auch nochmal nachgucken.naums hat geschrieben:Von der Sache her ja.
1. Das funzt leider net. Liefert ein leeres Resultat zurück.
2. Das sucht nur nach EINER ip, ich suche aber jede neue IP. Es darf nie die gleiche IP am gleichen Tag gezählt werden, allerdings muss die gleiche IP am nächsten Tag gezählt werden.
Zusammenzählen ist ne einfache Geschichte in PHP, allerdings will ich den Server wie gesagt nicht killen indem ich den Apache alles Filtern lasse.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Re: SQL: Datensätze mit neuer IP ausgeben
Dann doch wie cloidnerux schon sagte, mit DISTINCT.naums hat geschrieben:Von der Sache her ja.
1. Das funzt leider net. Liefert ein leeres Resultat zurück.
2. Das sucht nur nach EINER ip, ich suche aber jede neue IP. Es darf nie die gleiche IP am gleichen Tag gezählt werden, allerdings muss die gleiche IP am nächsten Tag gezählt werden.
Zusammenzählen ist ne einfache Geschichte in PHP, allerdings will ich den Server wie gesagt nicht killen indem ich den Apache alles Filtern lasse.![]()
MfG naums
Code: Alles auswählen
SELECT DISTINCT ip FROM `counter` WHERE DATE(date) = CURDATE();
Code: Alles auswählen
SELECT COUNT(DISTINCT ip) FROM `counter` WHERE DATE(date) = CURDATE();
Code: Alles auswählen
SELECT DISTINCT ip FROM `counter`;
Code: Alles auswählen
SELECT COUNT(DISTINCT ip) FROM `counter` ;