Felder aus anderen Tabellen "joinen"

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • jan.theofel
    Contao-Urgestein
    • 23.06.2009
    • 1857

    #1

    Felder aus anderen Tabellen "joinen"

    Hi,

    ich habe in der Dokumentation und im Forum leider keinen Hinweis darauf gefunden (ggf. die Tomaten von meinen Augen nehmen und Link senden - danke!) , ob bzw. wie es möglich ist, aus referenzierten Tabellen andere Felder als das Referenzfeld aufzunehmen. Datenbanktechnisch betrachtet möchte ich quasi einen Join machen.

    Minimalbeispiel:
    1. Tabelle: Bücher mit Felden Autor (Text), Titel (Text), ISBN (Text), Verlag (Referenz)
    2. Tabelle: Verlage mit Name (Text), Webseite (URL)

    Im Beispiel stünde mir im Katalog Reader für das Buch nur die dortigen Felder zur Verfügung inklusive des Verlagsnamen. Nicht jedoch die URL des Verlags. Wie komme ich an dieses Feld ran um direkt im Katalog Reader des Buches auf die Webseite des Verlags zu referenzieren?

    Jan
    Jan Theofel
    Barcamp-Moderator für Corporate-Barcamps und öffentliche Barcamps
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo ETES,
    suchst du das hier -> http://de.contaowiki.org/Catalog_Tem..._referenzieren ?

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

    Kommentar

    • jan.theofel
      Contao-Urgestein
      • 23.06.2009
      • 1857

      #3
      Hi,

      den Eintrag hatte ich schon mal vor Augen und erst für etwas anderes gehalten. Es geht in die richtige Richtung aber quasi "redundant" wenn ich es korrekt verstehe.

      Du hattest dort (leicht abgewandelt) folgendes Beispiel.

      Die Felder von "Komponisten" (stark vereinfacht):
      * Name des Komponisten
      * Geburtsjahr des Komponisten
      * Sterbejahr des Komponisten
      * Feld um Werke auszuwählen
      Die Felder von "Werke" (stark vereinfacht):
      * Titel des Werkes
      * Daten des Werkes
      * Komponist des Werkes

      Wenn ich das richtig sehe, hat man dabei eine Redundanz in den Daten. Das löst zwar das Problem, aber wie ich finde unschön. Denn es bläht die Daten unnötig auf und ist fehleranfällig. So kann man ein Werk eintragen ohne es beim Komponisten auszuwählen.

      Was ich statt dessen suche, ist das ganze ohne diese Redundanz:

      Die Felder von "Komponisten" (stark vereinfacht):
      * Name des Komponisten
      * Geburtsjahr des Komponisten
      * Sterbejahr des Komponisten
      Die Felder von "Werke" (stark vereinfacht):
      * Titel des Werkes
      * Daten des Werkes
      * Auswahlfeld für einen Komponisten

      Nun soll die Liste der Werke wie folgt aussehen:

      Titel (Komponist, 19xx-19xx)
      Daten des Werks

      Ich muss also die Felder aus dem referenzierten Komponisten mit im Reader für das Werk zur Verfügung stellen.

      Jan
      Jan Theofel
      Barcamp-Moderator für Corporate-Barcamps und öffentliche Barcamps

      Kommentar

      • jan.theofel
        Contao-Urgestein
        • 23.06.2009
        • 1857

        #4
        Hi,

        ok, marsch marsch zurück. Ich habe den unrelevanten Teil der dortigen Lösung durchgelesen. Ich sehe die Werte, die ich brauche in <?php print_r($this->entries); ?>. Dann komme ich da auch ran.

        Jan
        Jan Theofel
        Barcamp-Moderator für Corporate-Barcamps und öffentliche Barcamps

        Kommentar

        • jan.theofel
          Contao-Urgestein
          • 23.06.2009
          • 1857

          #5
          Hi,

          für alle, die vor dem selben Problem stehen, hier mal ein Minimalcode für Einzelreferenzen. (Also dann, wenn immer nur ein Autor einem Werk zugeordnet ist, nicht mehrere. Bei mehreren muss wie in dem referenzierten Beispiel $entry['data']['komponist']['ref'] in einer Schleife durchlaufen werden.)

          PHP-Code:
          <?php foreach ($this->entries as $entry): ?>
          <div class="werke">
             <?php echo $entry['data']['titel']['value'] . 
             "(" . echo $entry['data']['komponist']['ref']['1']['name']; . ", " 
             . $entry['data']['komponist']['ref']['1']['geburtsjahr'] . " - " 
             .  $entry['data']['komponist']['ref']['1']['sterbejahr'] . ")"; ?>
            ...
          </div>
          <?php endforeach; ?>
          Jan
          Jan Theofel
          Barcamp-Moderator für Corporate-Barcamps und öffentliche Barcamps

          Kommentar

          • MacKP
            Contao-Yoda
            • 15.06.2009
            • 13315

            #6
            Hallo ETES,
            das sieht ja schick aus.
            Magst das vllt mit ein wenig davon ins Wiki schreiben mit einer kleinen Erläuterung?

            Viele Grüße
            Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
            [Arbeitet bei -> Paus Design & Medien]
            "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

            Kommentar

            • jan.theofel
              Contao-Urgestein
              • 23.06.2009
              • 1857

              #7
              Hi,

              habe Christian schon gefragt, wie ich an einen Zugang komme und mich belehren lassen, dass man sich einfach nur selbst anmelden muss. ;-)

              Jan
              Jan Theofel
              Barcamp-Moderator für Corporate-Barcamps und öffentliche Barcamps

              Kommentar

              • MacKP
                Contao-Yoda
                • 15.06.2009
                • 13315

                #8
                Ja, manchmal ist das zu einfach ;-)

                Schon mal vielen Dank, das du da mit machst

                Viele Grüße
                Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
                [Arbeitet bei -> Paus Design & Medien]
                "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

                Kommentar

                Lädt...