Announcement

Collapse
No announcement yet.

DELETE

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

  • DELETE

    Hallo<BR><BR>
    Ich muß aus einer Tabelle LOHN Daten löschen, die vor dem Jahre 2003 aufgelaufen sind.<BR>
    "delete from lohn where lohn.jahr < 2003" lautet dementsprechend die Anweisung.<BR>
    Hinzu kommt jetzt die Tabelle PERSONAL. Hier stehen die Mitarbeiter mit Personalnummer und Status drin. Mit Status meine ich, ob beschäftigt (status = 2) oder gekündigt (status = 3). <BR>
    Es dürfen nur die Lohndaten aus LOHN geläscht werden, wo gleichzeitig die Mitarbeiter aus PERSONAL den Status 3 haben, also gekündigt sind.<BR><BR>
    Das Statement sollte also ungefähr so aussehen:<BR>
    delete from lohn where lohn.jahr < 2003 and personal.status = 3<BR><BR>
    Ein Versuch mit<BR>
    delete from lohn, personal where lohn.jahr < 2003 and personal.status = 3<BR><BR>
    brachte auch nichts.<BR>
    Wie kann ich das machen?<BR><BR>
    Danke für eure Hilfe<BR>
    Sven

  • #2
    Hallo Sven,

    beim delete darfst Du keine 2 Tabellen angeben, sonst müsste ja in beiden Tabellen gelöscht werden. Außerdem hattest Du keine Joinbedingung drin. (bei einem select krigst Du so ein kartesisches produkt, also ziemlich viel) Probiers mal so:

    delete from lohn where exist (select 1 from personal where personal.personalnummer = lohn.personalnummer and personal.status = 3)

    je nach DB und SQL-Syntax musst Du vielleicht auch sagen:

    delete from lohn where lohn.personalnummer = (select personal.personalnummer from personal where personal.status = 3)

    Gruß
    Usch

    Comment


    • #3
      Hi Uschi<BR><BR>
      danke für Deine Hilfe. Damit kann ich was anfangen. Werds gleich mal ausprobieren

      Comment


      • #4
        Hi - ich nochmal,<BR><BR>
        hab es mit folgender Syntax probiert:<BR>
        <B>delete from auswlohn where auswlohn.personalnr = (select personal.personalnr from personal where personal.persstatus = 3)</B><BR><BR>
        Dann kommt folgende Fehlermeldung:<BR>
        multiple rows in singleton select<BR><BR>
        DB ist Interbase.<BR>
        Kannste mir weiterhelfen

        Comment


        • #5
          delete from auswlohn where auswlohn.personalnr IN (select personal.personalnr from personal where personal.persstatus = 3

          Comment


          • #6
            Danke Stefan, hat geklappt<BR><BR>
            Sve

            Comment

            Working...
            X