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 ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken 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 > MySQL

MySQL Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQL diskutieren

 
 
Themen-Optionen Ansicht
  #1  
Alt 14.01.2009, 12:28:04
Schiergl Schiergl ist offline
Anfänger
 
Registriert seit: Jan 2009
Alter: 49
Beiträge: 3
Zeilen per SQL vor und nach einem bestimmten Datensatz ändern

Ich habe ein verzwicktes Problem:

* Meine Tabelle ist sehr groß, d.h. es stehen u.U. 1 Mio oder mehr Datensätze drin.
* Die Tabelle enthält Log-Daten, die alle 30 Sekunden geschrieben wurden.
* Ich muss Datensätze markieren, die vor und nach bestimmten anderen Datensätzen liegen.

Im Klartext:
Die Datensätze werden über die Spalte: LOG_SAVE für weitere Aktionen im Programm markiert 0=speichern, 1= nicht speichern.
Des weiteren gibt es ein LOG_ERRORBYTE, das den kompletten Fehlercode in der Form "00000000" enthält, wobei jede Stelle für einen bestimmten Fehler steht und die Werte von 0-3 annehmen kann.

Ich möchte jetzt über einen SQL-Befehlt alle Datensätze markieren (einmal über LOG_SAVE=1 und andererseits den Wert des LOG_ERRORBYTE ändern) für alle Datensätze, welche einen bestimmten Errorbyte gesetzt haben und 2 Minuten vor und 2 Minuten nach dem fehlerhaften Datensatz liegen. Als Filter wird immer die LOG_HIS_ID genutzt, welche die Zuordnung der Daten zu einem bestimmten Log-File darstellt.

Ich weiß, dass ich das theoretisch auch über PHP machen könnte, aber aufgrund der großen Datenmenge dauert es zu lange.

Der Grundcode ist:
PHP-Code:
UPDATE datenlogs SET LOG_SAVE=1LOG_ERRORBYTE=INSERT(LOG_ERRORBYTE,$position,1,2
WHERE SUBSTR(LOG_ERRORBYTE,$position,1)=AND LOG_HIS_ID=$his_id 
weiter weiß ich nicht und jegliche Versuche, auf umliegende Daten zuzugreifen sind fehlgeschlagen.

Es wäre schön, wenn mir jemand helfen könnte.

Wenn jemand Testdaten haben möchte:
PHP-Code:
CREATE TABLE IF NOT EXISTS `datenlogs` (
  `
LOG_IDbigint(19NOT NULL auto_increment,
  `
LOG_HIS_IDint(11) default NULL,
  `
LOG_DATEdate default NULL,
  `
LOG_TIMEtime default NULL,
  `
LOG_SAVEtinyint(1) default '0',
  `
LOG_ERRORBYTEvarchar(50) default '00000000000000000000',
  
PRIMARY KEY  (`LOG_ID`)
TYPE=MyISAM  AUTO_INCREMENT=;

INSERT INTO `nades_datenlogs` (`LOG_ID`,  `LOG_HIS_ID`, `LOG_DATE`, `LOG_TIME`, `LOG_SAVE`, `LOG_ERRORBYTE`) VALUES
(12'2008-01-24''00:00:03'0'00000000000000000000'),
(
22'2008-01-24''00:00:33'0'00000000000000000000'),
(
32'2008-01-24''00:01:03'0'00000000000000000000'),
(
42'2008-01-24''00:01:33'0'00000000000000000000'),
(
52'2008-01-24''00:02:03'0'00000000000000000000'),
(
62'2008-01-24''00:02:33'0'0000000000000000000'),
(
72'2008-01-24''00:03:03'0'00000000000000000000'),
(
82'2008-01-24''00:03:33'1'10000000000000000000'),
(
92'2008-01-24''00:04:03'0'00000000000000000000'),
(
102'2008-01-24''00:04:33'0'00000000000000000000');
(
115'2008-03-26''23:22:05'0'00000000000000000000'),
(
122'2008-01-24''00:05:33'0'00000000000000000000');
(
132'2008-01-24''00:06:03'0'00000000000000000000'),
(
142'2008-01-24''00:06:33'0'00000000000000000000'); 
Datensatz 8 ist zum Speichern markiert. $position ist für die Beispieldaten 1, $his_id ist 2. Jetzt sollen bei den Daten die Zeilen vor dem DS 8 gefunden werden, welche 2 Minuten davor und 2 Minuten danach sind. Bei ihnen muss die erstel Stelle des LOG_ERRORBYTE als 3 gesetzt werden.
Also es müsste nach der Änderung bei den Datensätzen 4,5,6,7,9,10,12,13 der LOG_ERRORBYTE='10000000000000000000' und LOG_SAVE=1 sein.

Geändert von Schiergl (15.01.2009 um 11:07:13 Uhr)
Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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
Sprachwahl bei bestimmten einträgen in der SQL Datenbank Slappi PHP Grundlagen 1 02.10.2006 17:54:31
Abfrage einer bestimmten Spalte in SQL LV2005 MySQL 7 01.08.2006 19:15:54
Alle Zeilen mit bestimmten Wert ausgeben koerschgen2001 PHP Grundlagen 2 23.11.2005 18:09:31
Einen bestimmten Datensatz am ende einer Liste JansonChristian PHP für Fortgeschrittene und Experten 1 29.05.2005 13:18:36
aus Datei je 10 Zeilen neue Liste? doudie PHP für Fortgeschrittene und Experten 3 29.08.2002 21:58:46


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:56:40 Uhr.


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


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