Wie macht man einen JOIN in Catalog

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • gerly2000
    Contao-Nutzer
    • 13.07.2010
    • 5

    #1

    Wie macht man einen JOIN in Catalog

    Sicher, in den PHP-Code eingreifen, kommt aber für mich nicht in Frage. Aber ich habe eine funktionierende MySQL-Query, die ich hier mal online stelle, ist ne Rennergebnis-Datenbank, die Results setzten sich aus den Datensätzen der laps zusammen:

    SELECT vrf_results.id, driver_name, MAX( round ) AS Runden,
    SUM( race_times ) AS Gesamtzeit

    FROM
    vrf_results INNER JOIN vrf_laps ON vrf_results.lap_id = vrf_laps.results_lap_id

    Meine Frage:
    Gibts die Möglichkeit so was ohne PHP-Knowhow in Catalog zu lösen
    Welches Teil in Catalog muss ich verwenden (Liste, Auswahl, Berechnung ...)
    Welche Bedingung oder Berechnung gehört dann wohin ...
  • MacKP
    Contao-Yoda
    • 15.06.2009
    • 13315

    #2
    Hallo gerly2000,
    ich weiß jetzt gerade gar nicht was du willst.
    Willst du etwas bestehendes mit dem Catalog nachbauen?

    Ganz ohne PHP und die Bereitschaft da ein wenig was zu lernen wirst du mit den Catalog so oder so keine Freude haben.

    Vieles kannst du auch hier schon nachlesen: http://de.contaowiki.org/Kategorie:Catalog

    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

    • gerly2000
      Contao-Nutzer
      • 13.07.2010
      • 5

      #3
      Sorry, hatte falsche SQL Anweisung in meinen Post kopiert ...

      Ich möchte eine Rennergebnis-Liste mit Werten aus 2 Tabellen zusammenstellen. Eine Tabelle ist "Resultate" (ca. 300 Datensätze) mit Spalten wie Name, Datum/Uhrzeit usw. und lap_id. Die zweite Tabelle ist "Rundenzeiten" (ca. 4000 Datensätze) mit den Spalten:
      • results_lap_id (Alle Rundenzeiten haben immer die results_lap_id, die zu einem bestimmten Resultat gehören - verbunden via Resultate.lap_id)
      • Rundennummer (in welcher Runde wurde die Zeit gefahren) und
      • Rundenzeit (Dezimalzahl).

      Ich will jetzt eine Tabelle in catalog erstellen mit
      • "Resultate".Name
      • Maximum aus der Spalte "Rundenzeiten".Rundennummer
      • Summe der Spalte Rundenzeit aus "Rundenzeiten"

      Gruppiert nach lap_id, damit immer die Namen mit den Ergebnissen angezeigt werden, die auch tatsächlich zu diesem Namen gehören.

      Wie stell ich es in catalog am elegantesten an, dass ich zu dieser Liste komme ...?

      Jetzt auch noch die richtige MySQL-Anweisung, din in MySQL-Admin das passende Ergebnis liefert:
      --
      SELECT driver_name AS Fahrername, MAX( round ) AS Runden,
      SUM( race_times ) AS Gesamtzeit
      FROM
      vrf_results INNER JOIN vrf_laps ON vrf_results.lap_id = vrf_laps.results_lap_id
      GROUP BY results_lap_id
      ORDER BY Runden DESC, Gesamtzeit ASC
      --

      Ich komm mit Contao und Catalog ansich ganz gut zurecht, gehört zum besten, was ich im Bereich CMS je gesehen habe, und bin trotzdem nicht sicher, ob das mit dem Tool so easy zu lösen ist.

      Kommentar

      • MacKP
        Contao-Yoda
        • 15.06.2009
        • 13315

        #4
        Hallo gerly2000,
        und die beiden anderen Tabellen sind auch über den catalog angelegt?
        Oder liegen die komplett außerhalb?

        Ich mein.. du kannst natürlich eine Auswahl so anlegen, das man Einträge aus einem anderen Katalog oder einer anderen Tabelle nimmt.
        Da dann zum beispiel als Select mit Mehrfachauswahl oder Tags (wobei ich glaube das man damit nicht gerade glücklich wird bei der Menge an Daten die man dann auswählen kann)...
        Von daher glaube ich das es da praktischer wäre, wenn du das in nem Template erledigst.
        Und wie gesagt wird das ohne ein wenig PHP nicht gehen....

        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

        • gerly2000
          Contao-Nutzer
          • 13.07.2010
          • 5

          #5
          Tabellen über Catalog angelegt, PHP-File, das funktioniert.

          Ja, die Tabellen sind im Catalog angelegt und dann im MysqlAdmin gefüllt worden. Alle daten sind jetzt über Catalog verfügbar.

          Mittlerweile hab ich es geschafft, mir eine PHP-Datei anzulegen, die sogar FUNKTIONIERT *freu* (Datenbank-Logindaten geändert):

          Code:
          <?php
          $host = "rooot";
          $user = "ergebnis";
          $pass = "xxxxx";
          $db = "db2";
          
          mysql_connect($host, $user, $pass);
          mysql_select_db($db);
          unset($host,$user,$pass,$db);
          
          
          $query = "SELECT driver_name AS Fahrername, MAX( round ) AS Runden,
          SUM( race_times ) AS Gesamtzeit
          FROM
          vrf_results INNER JOIN vrf_laps ON vrf_results.lap_id = vrf_laps.results_lap_id
          GROUP BY results_lap_id
          ORDER BY Runden DESC, Gesamtzeit ASC
          ";
          
          $result = mysql_query($query);
            while ($row = mysql_fetch_array($result))
          {
              echo "<div class = zeile><div class = fahrer> $row[Fahrername] </div>";
              echo "<div class = runden> $row[Runden] Runden </div>";
              echo "<div class = sekunden> $row[Gesamtzeit] Sekunden</div></div>";
          
            }  
          
           ?>
          Die Frage ist jetzt, geht das als Code schneller und welchen Teil integrier ich wo im Template ...?

          THX, sehr nett, dass ich hier Antworten bekomme :-) :-) :-) :-) :-) :-)

          Kommentar

          • MacKP
            Contao-Yoda
            • 15.06.2009
            • 13315

            #6
            Hallo gerly2000,
            ich bin selber nicht so der Progger, daher kann ich dir nur allgemein sagen:
            Mach das lieber mit den Contao eigenen Funktionen. Darüber kannst du die Datenbank dann ansprechen (ohne erst noch mal alle Verbindungsdaten eingeben zu müssen).

            Welches Template: Das kommt drauf an wo du die Infos haben willst und welches Template du da benutzt. Das siehst du ja in den Modul konfigurationen....

            Hier noch mal ein paar Beispiele wie du 2 Kataloge zusammenbringen kannst im Template:

            Eventuell hilft dir das weiter.

            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...