Announcement

Collapse
No announcement yet.

Join über 3 Tabellen

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

  • Join über 3 Tabellen

    Hallo alle miteinander,

    ich habe folgendes Problem. Ich muß in einer DB, bei der es eine Tabelle mit n Objekten gibt, die mit einer Tabelle mit m Objektteilen, in der der Schlüssel einer Tabelle mit Werten steht.
    <BR>zB. Tabelle Objekt mit ID_Objekt, Nr, Name, ..
    <BR> Objektteil mit ID_Objekt, ID_Thes
    <BR> Thesaurus mit ID_Thes, Name
    <P>
    Ich möchte nun für einen Tesaurusnamen alle Objekte erhalten. Ist kein Problem, aber ich muß dazu noch alle Tesaurusnamen die zu diesen Objekt gespeichert sind in einem Ergebnisstring anzeigen. Ich habe keinen Plan wie ich es machen soll.
    <P>
    Danke für die Mithilfe

    Andre

  • #2
    Hallo Andre,

    ich bin mir nicht sicher, ob ich die Frage verstehe. Welche Felder befinden sich in welcher Tabelle und welche Felder möchtest
    Du angezeigt bekommen?

    Grüße Joche

    Comment


    • #3
      Hallo Jochen,

      Also in der Tabelle Objekt befinden sich die eigentlichen Objektangaben wie Objekt.ID_Obj, Objekt.Name usw... in der Tabelle Objektteil befinden sich Teilobjekte, die mittels des Key ID_Obj mit den Objekt verknüft sind. Objektteil.ID_OT, Objektteil.ID_Obj, Objektteil.Thes und in der Tabelle Thesaurus stehen die Begriffe, nach denen gesucht wird.
      <BR> Tabelle Objekt: Objekt.ID_Obj, Objekt.Name
      <BR> Tabelle Objektteil: Objektteil.ID_OT, Objektteil.ID_Obj, Objektteil.Thes_ID
      <BR> Tabelle Thes: Thesaurus.Thes_ID, Thesaurus.Name
      <P>
      <P>
      Zu einen Objet kann es mehrere Objekteile geben. Select nach einem bestimmeten Thesaurus.Name LIKE %Objekt% klappt. Ergebnis ist eindeutig. Nun sollen aber in einer Liste auch die anderen Objektteile (sprich nur deren Thesaurus.Name) mit angezeigt werden und dort scheiter ich!!
      <P>
      Danke Andr

      Comment


      • #4
        Hallo Andre,

        poste doch bitte mal den kompletten Select, bei dem die 'eindeutige' Selektion funktioniert.

        Grüße Joche

        Comment


        • #5
          Hallo Jochen,

          hier der gewünschte Select
          <P>
          SELECT Objekte.Eigenname AS Expr1, Objekte.HIDA_Nr AS Expr2, Thesaurus.Sachbegriff
          <BR>FROM Objekte INNER JOIN
          <BR> Objektteil ON Objekte.ID_Obj = Objektteil.Obj_ID INNER JOIN
          <BR> Thesaurus ON Objektteil.Thes_ID = Thesaurus.ID_Thes
          <BR>WHERE (Thesaurus.Sachbegriff LIKE 'siedlung%')

          Im Ergebnis erscheinen alle Objekte, die ein Objektteil mit dem Sachbegriff "Siedlung%" haben. Es kann aber noch weitere Objektteile mit anderen Sachbegriffen geben, die in der Ergebnismenge mit angezeigt werden sollen. Ich hoffe es ist jetzt verständlicher, wass ich will!

          Danke Andr

          Comment


          • #6
            Nein, ist mir nicht wirklich verständlicher geworden. Kannst ja nochmal versuchen mir näher zu bringen wie welche Tabellen zusammenhängen.

            >Objektteil.ID_OT, Objektteil.ID_Obj, Objektteil.Thes und in der Tabelle Thesaurus stehen die Begriffe, nach denen gesucht wird.

            Insbesondere dieser Satz ist mir unverständlich. Ich hatte gehofft, das durch den Beispielselect besser zu verstehen. Dem war aber nicht so.

            Grüße Joche

            Comment


            • #7
              Hallo Jochen,

              Danke für deine Ausdauer. Es ist so, daß in der Tabelle immer ein eindeutiges Objekt steht. Zu diesem Objekt kann es mehrere Teilobjekte geben, die in der Tabelle Objektteil stehen, in dieser Tabelle sind über den Index die Sachbegriffe der Tabelle Thesaurus verknüpft. Jetzt ist es ja kein Problem über die obige Abfrage nach einem Sachbegriff genau die Objekte zu erhalten, die diesen enthalten. Das Problem ist aber, daß in der Ergebnismenge auch die Sachbegriffe aufgeführt werden, die zu diesem Objekt gehören, stehen also als Objektteile verknüpft über den ID_Obj in der Tabell Objektteil.
              <P>falls es immer noch nicht vertändlich ist maile mir doch mal direkt unter [email protected] vielleicht können wir das Problem auf dem dirkten wege besprechen.
              <P>
              <P>

              Grüße Andr

              Comment

              Working...
              X