[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2006
    Beiträge
    2

    create view oder constraint oder trigger oder ... ?

    Hallo zusammen,

    ich habe folgendes Problem:

    für eine Datei sollte (staendig) gewaehrleistet werden:

    A = Satz Anzahl + 1

    wobei
    A =
    select count(*) from (
    select feld1 from file1
    group by feld1
    union
    select feld2 from file1
    group by feld2 )

    (Bemerkung: dieses Statement so funktioniert bei mir nicht)

    Diese Datei beinhaltet eine Hierarchie von Agenten.
    feld1 = "Kind"
    feld2 = "Vater"

    Könnte mir jemand helfen ?
    Für die Hilfe danke im voraus !

  2. #2
    Registriert seit
    Jul 2002
    Beiträge
    27
    Hallo,

    eine Möglichkeit wäre das Schlüsselwort UNIQUE im DDS.
    Beim Versuch einen Satz in die Tabelle zu schreiben, kommt dann eine Fehlermeldung. Diese müsste man abfangen bzw. verhindern.
    Voraussetzung ist, das KIND+VATER=PRIMARY KEY ist. Ein "Kind" kann und darf dann natürlich nicht mehrere "Väter" haben.

    Ich habe, zumindestens meines Wissens nach, nur einen Vater .
    Hoffe ich konnte weiterhelfen.

    Gruß JP

  3. #3
    Registriert seit
    Jul 2002
    Beiträge
    27

    Nachtrag

    hätt ich fast vergessen

    Somit wäre dann eigentlich deine Bedingung
    A = Anzahl Sätze + 1
    erfüllt, da die Daten "sauber" sind.

    Es sei denn, es gibt "Kinder", die keinen "Vater" haben .
    Oder "Väter" die keine "Kinder" haben.

  4. #4
    Registriert seit
    Jul 2006
    Beiträge
    2
    Vielen Dank für die Hilfe !
    Das scheint bisher eine einfache Lösung zu sein.
    Aber ich kenne mich mit Primary keys nicht aus, bisher habe ich sowas noch nie benutzt (noch mit SQL weder mit OS/400 constraint). Ich bin Anfänger im Thema "constraint". Könntest Du mir noch eventuell das Thema "Primary key" verdeutlichen ?

  5. #5
    Registriert seit
    Jul 2002
    Beiträge
    27
    ich erläutere es kurz anhand folgender zwei Tabellen
    der Klassiker :Bestellkopf & -positionen

    Bestellung Lieferant Lieferdatum
    1 123 10.08.06
    2 475 15.08.06
    3 845 11.08.06

    Bestellung Position Artikel Menge Info
    1 1 A10 9
    1 2 A11 2
    2 1 A20 10
    3 1 A11 5
    3 2 A11 10 mit rosa Schleife

    um einen Satz einer Tabelle eindeutig identifizieren zu können, benötigt man einen Schlüssel (Primary Key)
    das kann ein einfacher oder ein zusammengesetzter Schlüssel sein

    im Beispiel Bestellkopf wäre das die "Bestellung"
    im Beispiel Bestellpositionen sind das "Bestellung" + "Position" + "Artikel"

    nun kurz zum "constraint"
    ein constraint definiert eine Beziehung zwischen zwei Tabellen
    Beispiele:
    - es kann keine Bestellposition ohne zugehörgien Bestellkopf geben
    - es kann keine Bestellung ohne zugehörigen Lieferanten im Lieferantenstamm usw.

    hier ist es etwas ausführlicher beschrieben
    http://rowa.giso.de/oracle/latex/Constraints.html

Similar Threads

  1. CREATE VIEW
    By Franz Karl in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 20-01-07, 08:04
  2. CREATE FUNCTION mit select im Bauch ?
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 21-09-06, 16:05
  3. SQL -> CREATE VIEW
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 17
    Letzter Beitrag: 11-05-06, 14:57
  4. Create View über 3 Dateien
    By Mädele in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 24-08-05, 12:26
  5. UNION/UNION ALL beim CREATE VIEW
    By KB in forum IBM i Hauptforum
    Antworten: 0
    Letzter Beitrag: 24-07-01, 15:43

Berechtigungen

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