[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Nov 2006
    Beiträge
    60

    SQL Delete wenn Datensätze vorhanden

    Hallo an Alle,

    Ich möchte via SQL folgendes erreichen und hoffe ich finde hier Hilfe!

    Es bestehen 2 Dateien
    in der 1. Artikel in der 2.Lieferanten eindeutiger Schlüssel Lieferantennr und Sparte, nun möchte ich gerne aus der 1.Datei alle Artikel löschen deren Lieferantennummer nicht in der 2. Datei bestehen.....

    Code:
    DELETE FROM ARTIKEL WHERE not exists (select * from   
    LIEFERANT where ARTIKEL.lieferant_nr = LIEFERANT.Lieferant_nr and  
    ARTIKEL.sparte = LIEFERANT.sparte)
    ... dieses funktioniert einwandfrei


    und nun mein Problem ich möchte das nur Datensätze aus der 1.Datei (Artikel) gelöscht werden wenn in der 2.Datei (Lieferanten) mindestens 1 Datensatz vorhanden ist, sprich wenn Datei 2 count(*) > 0 denn DELETE.

    Vielen Dank im voraus

    mfG
    Bobou

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    DELETE FROM ARTIKEL WHERE (select count(*) from
    LIEFERANT where ARTIKEL.lieferant_nr = LIEFERANT.Lieferant_nr and
    ARTIKEL.sparte = LIEFERANT.sparte) > 0
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2007
    Beiträge
    189
    Zitat Zitat von Fuerchau Beitrag anzeigen
    DELETE FROM ARTIKEL WHERE (select count(*) from
    LIEFERANT where ARTIKEL.lieferant_nr = LIEFERANT.Lieferant_nr and
    ARTIKEL.sparte = LIEFERANT.sparte) > 0
    Sollte es nicht
    Code:
    ....  = 0
    sein?
    Zitat Zitat von Bobou Beitrag anzeigen
    ...1.Datei alle Artikel löschen deren Lieferantennummer nicht in der 2. Datei bestehen.....
    mfg

    Kit
    www.ecofitonline.com
    DeskfIT - ChangefIT - XrefIT

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    mindestens 1 Datensatz ist für mich immer noch > 0
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Nov 2006
    Beiträge
    60
    Vielen Dank erstmal für die Antworten,

    aber irgendwie funktioniert das ganze noch nicht so wie gedacht.

    Ich versuche das mal als WENN/DANN -Formel anschaulich zu machen


    WENN

    Code:
    SELECT COUNT(*) FROM LIEFERANT
    > 0

    DANN

    Code:
    DELETE FROM ARTIKEL WHERE not exists (select * from   
    LIEFERANT where ARTIKEL.lieferant_nr = LIEFERANT.Lieferant_nr and  
    ARTIKEL.sparte = LIEFERANT.sparte)
    SONST

    Keine DELETE Ausführen

    ENDE

  6. #6
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    dann probier mal das:

    Code:
    DELETE FROM ARTIKEL WHERE not exists (select * from   
    LIEFERANT where ARTIKEL.lieferant_nr = LIEFERANT.Lieferant_nr and  
    ARTIKEL.sparte = LIEFERANT.sparte)
    AND (SELECT COUNT(*) FROM LIEFERANT) > 0

  7. #7
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    ... and ist dein Freund, mit anderen Worten, man darf Bedingungen mit AND verknüpfen...

    D*B

    Zitat Zitat von Bobou Beitrag anzeigen
    Vielen Dank erstmal für die Antworten,

    aber irgendwie funktioniert das ganze noch nicht so wie gedacht.

    Ich versuche das mal als WENN/DANN -Formel anschaulich zu machen


    WENN

    Code:
    SELECT COUNT(*) FROM LIEFERANT
    > 0

    DANN

    Code:
    DELETE FROM ARTIKEL WHERE not exists (select * from   
    LIEFERANT where ARTIKEL.lieferant_nr = LIEFERANT.Lieferant_nr and  
    ARTIKEL.sparte = LIEFERANT.sparte)
    SONST

    Keine DELETE Ausführen

    ENDE
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  8. #8
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Du hast es doch schon fast formuliert:

    Code:
    DELETE FROM ARTIKEL WHERE not exists (select * from   
    LIEFERANT where ARTIKEL.lieferant_nr = LIEFERANT.Lieferant_nr and  
    ARTIKEL.sparte = LIEFERANT.sparte)
    and 
    (SELECT COUNT(*) FROM LIEFERANT where ARTIKEL.lieferant_nr = LIEFERANT.Lieferant_nr)>0

Similar Threads

  1. embedded sql - Delete über mehrere Dateien
    By VAHLE in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 17-05-08, 00:00
  2. sql Anzahl Datensätze in Zweit-Datei
    By rr2001 in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 13-12-06, 14:04
  3. SQL left join
    By ahingerl in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 08-12-06, 08:28
  4. Hilfe .. SQL .. DELETE
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 02-12-06, 19:45
  5. SQL - gelöschte Datensätze wiederherstellen
    By User23 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 13-06-05, 09:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •