SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 10.02.2009, 20:27:42
jschlinker jschlinker ist offline
Anfänger
 
Registriert seit: Feb 2009
Alter: 50
Beiträge: 1
aufeinanderfolgende Zeilen mit JOIN vergleichen

Hallo,

mein Problem sieht folgendermassen aus:

Etwas vereinfacht habe ich eine mysql-Datenbank mit folgendem spaltenaufbau einer Tabelle:
id (AUTO_INCREMENT), computer_id(INT), time (INT).

Alle paar Sekunden tragen verschiedene Computer eine Zeile ein, wobei die time die Sekunden seit Anfang des Tages angibt.
Ich würde jetzt gerne pro Computer eine Statistik ausgeben wann jeweils pro Computer zwischen 2 aufeinanderfolgenden Eintragen mehr als x Sekunden lagen.
Wenn nur 1 Computer die Einträge macht ist das sehr einfach:
SELECT t2.time-t1.time, FROM mytable t1 INNER JOIN mytable t2 ON t1.id=t2.id-1 AND t1.time<t2.time-x;

Die Abfrage basiert auf der Annahme, daß die ID zweier aufeinanderfolgender Zeilen auch in Reihenfolge sind.
Wenn jetzt aber verschiedene Computer in dieselbe Tabelle schreiben sind die IDs nicht mehr aufeinanderfolgend.
Das wollte ich jetzt mit einer Variableln lösen, die sozusagen eine INCREMENTAL ID pro Computer on-the-fly erzeugt:
SET @counter=0;SET @counter2=0;
SELECT t2.time-t1.time FROM (SELECT @counter:=@counter+1 as counter, time FROM mytable WHERE computer_id=1) AS t1 INNER JOIN (SELECT @counter2:=@counter2+1 as counter, time from mytable WHERE computer_id=1) AS t2 ON t1.counter=t2.counter-1 and t1.time<t2.time-x;

Allerdings kehrt diese Query nicht mehr zurück.
Generell würde ich gerne statt zwei Sub-Queries zu machen nur einen machen, weiß aber nicht wie ich das bewerkstelligen soll.
Darüber hinaus wäre ich natürlich auch darüber dankbar wenn das ganze etwas simpler, schneller, besser gehen würde :-)
Hat jemand ne Idee?

Jürgen
Mit Zitat antworten
  #2  
Alt 10.02.2009, 22:19:58
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
AW: aufeinanderfolgende Zeilen mit JOIN vergleichen

Hmm, meinst du hier tatsächlich den Computer(PC) oder den User?
Im WWW wird es wohl keine Möglichkeit geben dieses ohne Login zu bewerkstelligen. Somit müsste deine Suche per User ausfallen.
Die IP's wechseln einfach zu häufig selbst bei "normalen" Usern.

Im Intranet wäre es einfacher, da hier die PC's eine eigene IP besitzen.

Allgemein fürs WWW würde mir hier nur einfallen eine entsprechende eindeitige ID zu benutzen. Somit kommt man um einen Login nicht herum. Notfalls das Ganze per Seesion aufbauen. Allerdings erzeugt dann jeder Aufruf eine neue ID.

Geändert von urvater (10.02.2009 um 22:20:43 Uhr)
Mit Zitat antworten
  #3  
Alt 09.03.2009, 11:00:36
TheRelativ
Guest
 
Beiträge: n/a
AW: aufeinanderfolgende Zeilen mit JOIN vergleichen

Zitat:
Zitat von urvater Beitrag anzeigen
Hmm, meinst du hier tatsächlich den Computer(PC) oder den User?
Im WWW wird es wohl keine Möglichkeit geben dieses ohne Login zu bewerkstelligen. Somit müsste deine Suche per User ausfallen.
Die IP's wechseln einfach zu häufig selbst bei "normalen" Usern.

Im Intranet wäre es einfacher, da hier die PC's eine eigene IP besitzen.

Allgemein fürs WWW würde mir hier nur einfallen eine entsprechende eindeitige ID zu benutzen. Somit kommt man um einen Login nicht herum. Notfalls das Ganze per Seesion aufbauen. Allerdings erzeugt dann jeder Aufruf eine neue ID.
bitte was zum henker hat das mit der eigentlichen Frage zu tun???? Rein gar nichts!
sowas regt mich in solchen Foren immer auf, erst Lesen, dann Denken, dann Posten.
Es ist in keinem Wort die Rede von "WWW" "Eindeutige Zuordnung der PCs" "Login" "IP" oder sonstigem aus deinem Beitrag.

Sondern dass wer oder was auch immer, seien es User per Klick oder eine Software, Einträge in eine MySQL Datenbank schreiben wo eine Eintrags-ID, Computer-ID und ein Zeitstempel enthalten sind.
Die Frage ist nun (nochmal für dumme):
Gibt es eine Möglichkeit herauszufinden, welche Computer zwischen 2 Einträgen mehr als X-Sekunden Liegen.
Ich tippe mal zur automatischen Fehlererkennung ob ein Computer das ganze vielleicht zu langsam macht.

Ich habe ein ähnliches Problem (MySQL Technisch gleich lösbar denke ich) hat aber nichts mit Computer-IDs zu tun.

Sondern die Frage, ob es eine Möglichkeit gibt, (fast) doppelte einträge zu finden (nicht zu filtern!)
Das fast bezieht sich auf den Zeitstempel. Wie gesagt, ähnliche Problematik wie von jschlinker.

Die Tabelle ist wie folgt aufgebaut:
Zeitstempel, ID1, ID2

Ich will die finden wo ID1 und ID2 mit dem darauffolgenden/vorherigem Zeitstempel übereinstimmen (wo jemand 2x auf absenden geklickt hat)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zwei Aggregatfunktionen in JOIN über drei Tabellen Nico #949494 MySQLi/PDO/(MySQL) 1 29.03.2007 14:47:58
4 Tabellen verknüpfen - INNER, OUTER und LEFT Join Franzx MySQLi/PDO/(MySQL) 0 13.11.2006 10:10:51
Performance bei Abfrage inner join Tikiwiki MySQLi/PDO/(MySQL) 7 21.02.2006 08:46:50
mysql query mit Join problem Silencer PHP für Fortgeschrittene und Experten 4 18.03.2003 15:38:31
aus Datei je 10 Zeilen neue Liste? doudie PHP für Fortgeschrittene und Experten 3 29.08.2002 20:58:46


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:31:34 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt