SQL Sicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Sicht

    Hallo
    Ich habe ein Problem ich bin SQL-Anfänger. Nein.
    Mein Problem ist ich möchte ein indirekte Abfrage
    von der Relation_DOC machen.
    Relation_DOC: Ist eine Relation für Dokumente sie
    enthält die Attribute: Id_key, Name, Type, etc.

    |ID|Name|Type|
    |1 |doc1|xyx |
    |2 |doc2|zzz |
    |3 |doc3|yyy |

    Relation_Child: Enthält die Kinder Dokumente für die
    Eltern Dokumente(von Relation_DOC) mit den Attribute:
    ID_key, Parent_ID, Child_ID.

    |ID|Parent_ID|Child_ID|
    |1 |1 |2 |
    |2 |1 |3 |
    |3 |3 |1 |
    |4 |2 |1 |

    Ich möchte nun eine WHERE (SQL) Sicht machen in dem
    ich anhand der Parent_ID in der Relation_Child, Kinder
    Dokumente in der Relation_DOC suche.

    Ach so, ich muss den SQL Server 2000 von Microsoft benutzen.
    Wer könnte mir helfen?

    Gruß
    Dimo

  • #2
    Hi!

    $parent_id; // wäre die Parent_ID für die alle childs gesucht werden müssen

    Code:
    CREATE VIEW docs AS
        SELECT *
        FROM Relation_DOC as docs, Relation_Child as childs
        WHERE childs.Parent_ID = $parent_id
        AND childs.Child_ID = docs.ID;
    
    SELECT * FROM docs;
    Grüsse

    [Editiert von iQD am 30-01-2002 um 19:35]
    FreeBSD - Unleash the daemon inside your PC

    Kommentar


    • #3
      Wär's nicht besser mit (betreffender Teilausschnitt):
      SELECT *
      FROM Relation_DOC as docs STRAIGHT JOIN Relation_Child as childs ON childs.Child_ID = docs.ID WHERE childs.Parent_ID = $parent_id;

      ?

      CAT Music Files

      Kommentar


      • #4
        Naja Der EQUI-JOIN is der Standardjoin. Und der STRAIGHT-JOIN ist der EQUI-JOIN(nur mit dem Unterschied die linke Tabelle vor der rechten auszulesen), daher nur in einigen Ausnahmen sinnvoll.

        Dies kann dazu benutzt werden, wenn der JOIN Optimizer die Tabellen in der falschen Reihenfolge ausgibt (in seltenen Fällen).
        Also nur sinnvoll in Verbindung mit dem JOIN Optimizer. Kann bei komplizierten Tabellen was bringen, aber bei diesen einfachen Strukturen wirds nicht viel an Speed bringen.

        Aber hast natürlich recht, wenns auch nix bringt, is es immer besser es trotzdem rein zu nehmen.

        Wenns was bringt schön, wenns nix bringt hat mas wenigstens probiert und schadet keinem.

        [Editiert von iQD am 30-01-2002 um 20:09]
        FreeBSD - Unleash the daemon inside your PC

        Kommentar


        • #5
          Schon klar, aber ich denke im Sinne der Angewöhnung eines guten Query-Stils sollte man es immer so halten - außerdem ist dann der Weg zu einem LEFT JOIN nicht mehr weit

          CAT Music Files

          Kommentar


          • #6
            Wo er recht hat, hat er recht
            FreeBSD - Unleash the daemon inside your PC

            Kommentar

            Lädt...
            X