Announcement

Collapse
No announcement yet.

verschachtelte delete anweisung

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

  • verschachtelte delete anweisung

    Hallo Leute ,

    ich habe ein kleines problem . kann man einen delete anweisung verschachtel. ich will diesen deletebefehl anwenden

    DELETE FROM tabelle1
    WHERE benutzer = 5
    AND aa_kostentraeger =
    ( Select bb_kostentraeger FROM tabelle2
    WHERE bb_Beschreibung = "testbeschrebung")

    geht leider nicht, wenn ich aber die 2. selectanweisung alleine ausführe funktioniert sie aber. ich brauche die 2. anweisung um aus einer beschreibung die zugehörige id herauszufinden und dann den record löschen.

    wäre euch sehr dankbar.

    gruß thorsten

  • #2
    Hi,
    <br>
    <br>welches Datenbanksystem?
    <br>
    <br>Probier mal:
    <br>DELETE FROM tabelle1 WHERE benutzer = 5 AND aa_kostentraeger <b>in</b> ( Select bb_kostentraeger FROM tabelle2 WHERE bb_Beschreibung = "testbeschrebung")
    <br>
    <br>mfg
    <br>P

    Comment


    • #3
      Hallo Patrick,

      ich benutze eine mysql datenbank. habe es so versucht, wie du geschrieben hast, hat aber leider auch nicht funktionert. Aber trotzdem vielen dank.

      gruß thorste

      Comment


      • #4
        Hi,
        <br>
        <br>mein letzter Stand (gut ein Jahr ist es her) war, das MySQL keine SubSelects kann. Nun muß ich mit Bestürzen vestellen, das das anscheinend noch immer nicht unterstützt wird.
        <br>Siehe:
        <br>1) http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html
        <br>Anscheinend auch keine Trigger/Procedures siehe:
        <br>2) http://www.mysql.com/doc/en/ANSI_diff_Triggers.html
        <br>
        <br>Unter 1) steht auch ein Lösungsvorschlag für dein Problem (habe den leider nicht getestet, aber vieleicht hilfts ja):
        <pre>
        SELECT CONCAT('DELETE FROM tab1 WHERE pkid = ', "'", tab1.pkid, "'", ';')
        FROM tab1, tab2
        WHERE tab1.col1 = tab2.col2;
        </pre>
        Wenn du in deinem Projekt noch mal die Wahl des SQL Servers überdenken kannst, dann schau dir mal den Interbase Server 6.XX von Borland an. Der ist auch "kostenfrei" aber hat doch einen größeren Funktionsumfang als der MySQL Server (zumindest kann der z.B. SubSelects und Stored Procedures und Trigger (dafür hat er ein ein paar Schwächen, er kann keine TempTables erstellen, was wieder um MySQL kann (aber erlich gesagt habe ich die bis jetzt noch nicht arg vermißt))).
        <br>
        <br>http://info.borland.com/devsupport/interbase/opensource/
        <br>
        <br>mfg
        <br>P

        Comment


        • #5
          Hallo Patrick,

          vielen dank nochmals. Werde mir mal die Borland Datenbank anschauen.

          Gruß Thorste

          Comment

          Working...
          X