SQL Problem mit DELETE

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Problem mit DELETE

    Hi,

    hab da ein kleines Problem, also mal zur Erklärung.

    Ich arbeite mit einem Traffic Verwaltungssystem über FTP, das ganze System kann jedoch nur SQL Abfragen senden, jedoch keine verarbeiten, ich kann also keine Werte zurückbekommen.

    Nun zum Problem, ich habe eine Tabelle mit den Traffic Daten drin, für jeden User pro Monat eine Zeile. Nun will ich beim Login überprüfen, ob der User schon eine Zeile für diesen Monat hat (dann wird nur der Traffic Wert immer weiter erhöht), falls nicht wird für ihn eine neue Zeile erstellt.

    Soweit so gut, normalerweise wäre die Sache ja mit einer Abfrage ob das Ding schon existiert, bzw. einer If Bedingung erledigt, aber das kann ich leider nicht.

    Mein Lösungsansatz bisher:
    Bei jedem Login eine neue Zeile erstellen
    Dann irgentwie überprüfen ob mehr als eine Zeile vorhanden ist, und die mit dem wenigsten Traffic löschen

    Das einfügen ist natürich kein Problem, aber halt das Löschen. Mein Ansatz zuerst war:
    Delete from traffic where username = '%username' and jahr = YEAR(CURDATE()) and monat = MONTH(CURDATE()) order by traffic desc limit 1,10

    Das hieße ja, der überspringt den ersten Eintrag, und löscht danach alle. Klappt auch als Select wunderbar, aber wenn ichs als Delete mache dann eben nicht.

    Hat einer ne gute Idee?
    http://www.freehost-script.com

    Werden Sie Webhoster, mit Werbung auf den Userseiten, Php, Mysql, FTP

  • #2
    Hallo Kleinbreuer

    So sollte es gehen:

    Eventuell vorhandene in neue temporäre Tabelle
    create temporary table tmp select * from traffic where user=... and ...

    Neuen dazu
    insert into tmp(jahr,monat,user,traffic) values (...)

    Jetzt sind 1-2 Zeilen drin. Die "richtige" Tabelle mit der Summe überschreiben
    replace into traffic(jahr,monat,user,traffic) select jahr,monat,user,sum(traffic) from tmp group by jahr,monat,user

    Voraussetzung damit der replace funktioniert:
    primary key(jahr,monat,user) in traffic

    Kommentar


    • #3
      Hmm, irgentwie will der mir die Temporäre Tabelle nicht erstellen....so langsam drehe ich mit dem Ding echt durch
      http://www.freehost-script.com

      Werden Sie Webhoster, mit Werbung auf den Userseiten, Php, Mysql, FTP

      Kommentar


      • #4
        Beim Schliessen der Connection wird sie wieder gelöscht!
        Oder Berechtigungsproblem?

        Kommentar


        • #5
          ich sehe Widersprüche in deiner Aussage. Anfangs sagst du, du bekommst keine Werte von der DB und am Schluss sagst du, mit Select wäre kein Problem

          Andererseits, was nützt dir eine DB, wenn du nur reinschreiben kannst

          Ansonstens ist UPDATE dein Freund.

          Kommentar


          • #6
            Nun will ich beim Login überprüfen, ob der User schon eine Zeile für diesen Monat hat (dann wird nur der Traffic Wert immer weiter erhöht), falls nicht wird für ihn eine neue Zeile erstellt.
            die vorgehensweise halte ich für grob fahrlässig, aber ist deine sache ...
            Code:
            INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
            mysql.com
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Mittlerweile hab ich das Problem mit einer Temporären Tabelle endlich gelöst, war nur ein dummer Schreibfehler drin, durch den das alles nicht klappte.

              Danke an die die mit geholfen haben.

              die vorgehensweise halte ich für grob fahrlässig, aber ist deine sache ...
              Was meinst du damit? In wie fern könnte es da Probleme geben?
              http://www.freehost-script.com

              Werden Sie Webhoster, mit Werbung auf den Userseiten, Php, Mysql, FTP

              Kommentar

              Lädt...
              X