Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 18

Thema: MySQL Frage

  1. #1
    Registriert seit
    27.07.2007
    Beiträge
    225

    MySQL Frage

    Hallo Leute,

    hat von Euch jemand eine Ahnung wie ich doppelte Einträge in der MySQL Datenbank filtern kann?

    Ich arbeite mit BOS2Web und mehreren Funkservern die mir manchmal die Einträge doppelt bzw. dreifach in die Datenbank schreiben, deshalb sollen die direkt in der DB gefiltert, um nicht mehrfach auf der BOS2Web Seite angezeigt werden.

    Meine Vorstellung ist, wenn ein Datensatz neu übertragen wird, soll die MySQL DB überprüfen , ob dieser Datensatz innerhalb der letzten 15 sek. schon mal gesendet wurde, also im Prinzip sind die Datensätze dann bis auf den TimeStamp gleich.

    mfg

  2. #2
    Registriert seit
    28.11.2005
    Beiträge
    2.759
    Moin..

    Spricht prinzipiell nichts dagegen, dafür müsste man nur den "eintragenden"
    Query ein wenig anpassen .. hast du darauf Zugriff ?

    Gruss,
    Tim
    --
    In a world without walls and fences, who needs Windows and Gates ??

    Meine private Webseite: http://www.db1jat.org

  3. #3
    Registriert seit
    27.07.2007
    Beiträge
    225
    Hallo,

    Zugriff ja, aber leider so gut wie keine Ahnung von SQL.

    Sag mir bitte was ich machen soll.

    mfg

  4. #4
    Registriert seit
    28.11.2005
    Beiträge
    2.759
    Am logischsten wäre wohl:

    Nenne die aktuelle Abfrage. Denn woher soll ich die kennen ? ;)

    Gruss,
    Tim
    --
    In a world without walls and fences, who needs Windows and Gates ??

    Meine private Webseite: http://www.db1jat.org

  5. #5
    Registriert seit
    27.07.2007
    Beiträge
    225
    reicht dir auch ein screenshot?

  6. #6
    Registriert seit
    28.11.2005
    Beiträge
    2.759
    Nein. Ich brauche Text ..

    Na sicher reicht nen Screenshot, hauptsache man kann was lesen ..
    --
    In a world without walls and fences, who needs Windows and Gates ??

    Meine private Webseite: http://www.db1jat.org

  7. #7
    Registriert seit
    27.07.2007
    Beiträge
    225
    bitte schön
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicken Sie auf die Grafik für eine größere Ansicht 

Name:	Unbenannt.JPG 
Hits:	147 
Größe:	119,1 KB 
ID:	10369  

  8. #8
    Registriert seit
    28.11.2005
    Beiträge
    2.759
    Und wo steht da das von dem "Datenbefüller" ausgeführte Query ?

    phpMyAdmin ist zwar schön zum Angucken, aber verändern muss man das Query,
    das dein Programm zum Datenbefüllen ausführt.
    --
    In a world without walls and fences, who needs Windows and Gates ??

    Meine private Webseite: http://www.db1jat.org

  9. #9
    Registriert seit
    27.07.2007
    Beiträge
    225
    aso,

    vb code

    strSQL = "UPDATE fms_fz SET status_fz='" & strSimple(6) & "', tki='" & strSimple(9) & "', user='" & user & "' WHERE kennung='" & strSimple(1) & "'"

    ich hoffe, das du hier mit was anfangen kannst.

  10. #10
    Registriert seit
    28.11.2005
    Beiträge
    2.759
    Dieses Statement bearbeitet eine schon vorhandene Zeile, es fügt keine neue ein..

    Hast du die falsche Stelle erwischt? ;)

    Ich schau trotzdem mal mit dem Screenshot, ob ich nen "Einzeiler" gezaubert kriege..
    Der müsste übrigens in jeder Datenquelle laufen, sonst bringt es nichts..

    Gruss,
    Tim


    *EDIT* Bitte finde doch mal eine Zeile, in der "INSERT INTO" am Anfang steht ;)

    Sollte es (nicht unbedingt SQL-Standard) nur die UPDATE-Zeile geben, könntest
    du (in allen Datensendern) folgendes versuchen:

    Code:
    strSQL = "UPDATE `fms_fz` SET `status_fz`='" & strSimple(6) & "', `tki`='" & strSimple(9) & "', `user`='" & user & "' WHERE `kennung`='" & strSimple(1) & "' AND DATE_SUB( NOW( ), INTERVAL 15 SECOND) <= `timestamp`;"
    Zur Erklärung: Das Original-Statement hat einen "WHERE" Abschnitt, je nach Ergebnis
    dieses Abschnitts wird das UPDATE durchgeführt. Neben den fehlenden " ` " für Feld-
    Bezeichner habe ich am Ende des Originals den Zusatz "AND ..." angefügt. Im
    Zusatz wird die aktuelle Uhrzeit zum Zeitpunkt der Abfrage und "15 Sekunden" subtrahiert,
    also ein Zeitstempel "erzeugt", der 15 Sekunden vor der Abfrage lag. Diese Zeit wird
    mit dem Zeitstempel der aktuellen UPDATE-Reihe verglichen. Ist die Aussage (<=)
    wahr (und alle anderen WHERE-Expressions auch), wird das Update ausgeführt, ansonsten
    nicht. Da ich nur diese Zeitstempel-Abfrage angefügt habe, ist also das Ziel erreicht,
    einen Datenbankeintrag nur dann zu aktualsieren, wenn innerhalb der letzten 15 Sekunden
    keine andere Änderung derselben Kennung vorgenommen wurde.
    An sich passt das aber nicht, da ein "UPDATE"-Befehl einfach nicht passt für die Aufgabe,
    die hier geleistet werden soll (INSERT INTO) ..

    Naja, zumindest weisst du also jetzt, wie du "die letzten 15 Sekunden" abfragst ^^
    Geändert von Shinzon (12.07.2009 um 13:12 Uhr)
    --
    In a world without walls and fences, who needs Windows and Gates ??

    Meine private Webseite: http://www.db1jat.org

  11. #11
    Registriert seit
    01.08.2007
    Beiträge
    557
    du könntest das ganze auch mit dem MySQL Statement GROUP BY machen

    so habe ich das gelöst bei der Digitalalarmierung:

    "SELECT * FROM pocsag GROUP by ric,funktion,meldung,datum,uhrzeit ORDER BY id DESC"

  12. #12
    Registriert seit
    27.07.2007
    Beiträge
    225
    danke schön,

    gibt es keine möglichkeit wo ich einen befehl in der db eintragen kann der bei jeder aktualisierung die einträge überprüft?
    ich finde dass das einfacher wäre als die upload softwae anzugleichen.

    mfg

  13. #13
    Registriert seit
    01.08.2007
    Beiträge
    557
    die zeile die ich gepostet habe ist, wird beim abruf eingefügt, sprich in das Skript, über das du die datenbank abfragst

  14. #14
    Registriert seit
    27.07.2007
    Beiträge
    225
    aah, ok, danke

  15. #15
    Registriert seit
    27.07.2007
    Beiträge
    225
    uiuiui,

    kannst du mir helfen die zeile einzubinden?

    das ist mein code

    $sql = 'SELECT date_format(h.timestamp, "%H:%i:%s") as timestamp, date_format(h.timestamp, "%d.%m.%Y") as datum, h.kennung, h.ID, h.tki, h.status, h.richtung, f.fahrzeug, f.rufname '
    .'FROM '.$tbl_fms_hist.' h LEFT JOIN '.$tbl_fms_fz.' f ON(h.kennung=f.kennung) '
    .'ORDER BY h.timestamp DESC '
    .'LIMIT '.(isset($limitfms) ? $limitfms : 100);

    mfg

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •