Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Datensatz zwischen bestehenden einfügen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Datensatz zwischen bestehenden einfügen

    (Besserer Titel fiel mir nicht ein)
    Ich habe eine Rechnungstabelle und eine Rechnungsdetailtabelle, in der die einzelnen Positionen gespeichert werden.
    Es gibt dort ein ID Feld (auto_increment) und ein LFDNR Feld (INT) welches automatisch mit fortlaufenden Nummern beginnend mit 1 gefüllt wird und als Sortierkriterium herhalten muß.
    Beispielsweise so:

    ID LFDNR
    34 1
    35 2
    36 3
    37 4

    Nun möchte ich beispielsweise an Pos. 2 eine Position einfügen. Meine Idee wäre die Positionen ab LFDNR 2 in eine temporäre Tabelle zu verschieben, die neue Pos. einzufügen und den Rest wieder dranzuhängen.
    Das erscheint mir ziemlich aufwändig. Gibt es eine bessere Möglichkeit?

  • #2
    Zitat von Registrierer Beitrag anzeigen
    Gibt es eine bessere Möglichkeit?
    Klar, UPDATE.
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar


    • #3
      Aha.

      Kommentar


      • #4
        Wie kann man denn nachträglich eine Rechnungsnummer (wozu die laufende Nummer ja gehört nehme ich an) ändern?

        Mit dem UPDATE war wohl so gemeint:
        Code:
        UPDATE table SET lfdnr = lfdnr + 1 WHERE id = 34 AND lfdnr >= 2
        INSERT INTO table (lfdnr) VALUES (2);
        Am Besten als Transaktion, also innoDB-Engine.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #5
          Es geht doch nur um die einzelnen Rechnungspositionen! Nicht um die Rechnungsnummer.

          Angenommen ich habe

          Pos.1 - Äpfel
          Pos.2 - Pfirsich
          Pos.3 - Melone

          hab aber vergessen die Birnen einzutragen wie:

          Pos.1 - Äpfel
          Pos.2 - Birnen
          Pos.3 - Pfirsich
          Pos.4 - Melone

          wie bekomme ich also am effektivsten die Birnen rein

          Kommentar


          • #6
            Achso, ja steht doch oben?
            "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

            Kommentar


            • #7
              Ich hab die meine Frage mal 1:1 bei tutorials.de gestellt und hoffe deswegen nicht gegen Forenregeln zu verstossen (extra nochmal gelesen).

              Das heisst aber nicht, dass ich das Wissen der hier schreibenden Benutzer in Frage stelle, sondern manchmal ist es ja nur ein Zeitproblem.

              Ich denke nach 20 Stunden ist das I.O.

              Edit.
              Sollte ich das hier dann als erledigt markieren auch wenn noch nicht gelöst?

              Kommentar


              • #8
                Wieso denn? Chriz hat dir die richtige Lösung doch schon geschrieben. Das ist EXAKT was du suchst, vlt. solltest du nochmal versuchen zu verstehen was dabei passiert. Zur Not mit Stift und Papier.

                Kommentar


                • #9
                  Hey verschmäst du etwa einen Schreibtischtest?!
                  So hab ich schon so manches logisches Problem gefunden...
                  "My software never has bugs, it just develops random features."
                  "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                  Kommentar


                  • #10
                    Zitat von Chriz Beitrag anzeigen
                    Code:
                    UPDATE table SET lfdnr = lfdnr + 1 WHERE id = 34 AND lfdnr >= 2
                    INSERT INTO table (lfdnr) VALUES (2);
                    Am Besten als Transaktion, also innoDB-Engine.
                    @Flor1an
                    Da war ich wohl etwas zu flüchtig

                    Ich versteh die 2. Zeile nicht richtig, was bedeutet die 2 in Klammern VALUES (2) ?

                    Mit Transaktion InnoDB-Engine hab ich noch gar keine Erfahrungen, klingt aber vernünftig das so zu machen. Muss mich allerding erst mal einlesen.

                    Danke einstweilen für die Hilfe.

                    Kommentar


                    • #11
                      Bei der zweiten Zeile wird einfach dieser Beispielwert 2 den du genannt hast eingefügt!

                      Wie du es wolltest: Alle Zahlen (zum sortieren) die >= 2 sind werden um 1 erhöht und die 2 eingefügt. Somit ist die alte 2 jetzt eine 3, die alte 3 eine 4 ... so hast du den Eintrag genau da eingefügt! Ist doch nicht so schwer zu verstehen?

                      @Paul.Schramenko: Nein ganz im Gegenteil! Deswegen hab ich es ja gesagt. Bei komplizierteren Rechnungen oder Indexschupsereien schreibe ich oft erst auf Papier wie es aussehen soll. Anhand von Beispielen kann man dann sehr viel einfacher sehen was gemacht werden muss.

                      Kommentar


                      • #12
                        War ja auch nur als Scherz gemeint =)
                        Ich mag schreibtischtests auch da wird einem dann meistens klar wie unnötig kompliziert man manchmal doch denkt, wenn man irgendwelche Fehler sucht...
                        "My software never has bugs, it just develops random features."
                        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                        Kommentar


                        • #13
                          Oha, danke dafür!
                          Umsetzung kann leider erst nächste Woche erfolgen.

                          Kommentar

                          Lädt...
                          X