Announcement

Collapse
No announcement yet.

frischling sucht hilfe bei update

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • frischling sucht hilfe bei update

    hallo, zusammen!

    ...bin ein sql-frischling und brauche bitte hilfe.

    ich habe eine tabelle, in der sich ´id_nr´, ´status´, ´kunde_nr´
    befindet:

    ich möchte alle gleichen `kunden_nr`,
    wo sich im ´status´ ein "N" und "J" befindet, auf "J" updaten,
    aber bei den ´kundne_nr´, wo sich im ´status´ nur "N" befinden,
    diese nicht.
    -krieg das einfach nicht geregelt!
    ...ist eine firebird-db.

    ID status kunde_nr
    -----------------------------

    177435 N 16943
    177437 N 16943
    177434 N 16943
    177448 N 16943
    177433 N 16943
    177446 N 16943
    177449 N 16943
    177438 N 16943
    177610 N 16943
    177623 J 16944
    177303 J 16944
    177301 J 16944
    177302 J 16944
    177309 N 16944
    177306 J 16944
    177311 J 16944
    177307 J 16944
    177366 N 16944
    177367 J 16944


    danke für eure hilfe!

    plosi

  • #2
    Hallo,

    sollte mit einer Subquery gehen:
    [highlight=sql]
    update tabelle a set
    status = 'J'
    where exists (
    select 'X' from tabelle b
    where b.kunden_nr = a.kunden_nr
    and b.status = 'N')
    and exists (
    select 'X' from tabelle b
    where b.kunden_nr = a.kunden_nr
    and b.status = 'J')
    [/highlight]

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      grosses danke an falk prüfer!

      update funktioniert mächtig - prächtig.

      -kleine frage noch: mein rechner benötigt sehr lange für das update,
      könnte man das update noch irgendwie beschleunigen?,
      -ausser natürlich einen schnelleren rechner...

      thx
      plosi

      Comment


      • #4
        Hi,

        Du könntest das Feld kunden_nr indizieren.

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          Hallo,

          wenn es im Status nur "J" und "N" gibt, sollte folgendes vielleicht auch etwas schneller gehen...?
          Code:
          UPDATE Tabelle
          SET Status = 'J'
          WHERE
            Status = 'N' and 
            kunde_nr in (SELECT kunde_nr FROM Tabelle WHERE Status = 'J')
          Vielleicht hilft's etwas...

          Gruß
          Olaf

          Comment


          • #6
            danke für euer interesse und hilfe!

            hallo olaf und dimitri!

            ..werde eure lösungsansätze gleich versuchen.
            danke für eure hilfe!


            THX
            plosi

            Comment


            • #7
              hallo olaf!

              Originally posted by Olaf Steffan View Post
              Hallo,

              wenn es im Status nur "J" und "N" gibt, sollte folgendes vielleicht auch etwas schneller gehen...?
              Code:
              UPDATE Tabelle
              SET Status = 'J'
              WHERE
                Status = 'N' and 
                kunde_nr in (SELECT kunde_nr FROM Tabelle WHERE Status = 'J')
              Vielleicht hilft's etwas...

              Gruß
              Olaf
              hallo olaf!

              ...habe deinen code ausgeführt, hat leider nicht das gewünschte ergebnis geliefert. die performens bei der ausführung - auch nicht. (diesmal hochleistungs spiele pc 4 gb ram)

              danke für die mühe!

              plosi
              Zuletzt editiert von plosi; 29.10.2008, 14:11.

              Comment

              Working...
              X