Problem: JOIN bei mehr als 2 Tabellen ohne Funktion?

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

  • Problem: JOIN bei mehr als 2 Tabellen ohne Funktion?

    Einen wunderschönen Guten Tag an die Runde
    Ich bin ein neuer User hier bei euch und mich quält nun schon ein Zeiterl die Funktion mehrere Tabellen auszulesen.


    Grundsätzlich funktioniert mein Code für 2 Tabellen perfekt. Nun möchte ich allerdings eine 3 Tabelle miteinbeziehen, aber da scheitere ich nun. Ob ich nun an mir selbst (kompliziertes Denken) scheitere hätte ich gerne mit euch gelöst, wenn möglich.


    Mein funktionierender Code sieht so aus (mit 2 Tabellen) - 10 Einträge

    PHP-Code:
    $sql "SELECT psm_kst.bez, psm_tb.* 
    FROM psm_kst LEFT 
    JOIN psm_tb ON psm_tb.kst_id = psm_kst.kst_id 
    WHERE ma_id ='
    $ma_id' ORDER BY psm_tb.id DESC"
    Der neue Code: - weit über 50


    PHP-Code:
    $sql "SELECT ma_text, std, ton, bem, psm_kst.kst_id, psm_kst.kst_bez, psm_lt.lt_id, psm_lt.lt_bez
            FROM psm_tb
            INNER JOIN psm_kst ON psm_tb.kst_id = psm_kst.kst_id
            INNER JOIN psm_lt ON psm_tb.lt_id = psm_lt.lt_id
            WHERE ma_id = '
    $ma_id'"
    </div>

    Ich habe zwei Tabellen erstellt (psm_lt und psm_kst) in denen ich einfach Stammdaten hinterlegt habe.
    In der psm_tb werden lediglich die id's gespeichert und mit der Abfrage komme ich somit auf den Namen/Bezeichnung.


    Übersicht PSM_TB
    id | ma_id | ma_text | kst_id | kat_id | lt_id | lt_bez | std | ton | bem | time


    Übersicht PSM_KST
    id | kst_id | kst_bez


    Übersicht PSM_LT
    id | kat_id | lt_id | lt_bez

    Selektiert wird nach der MA_ID der PSM_TB.

    Vielleicht steh ich echt "nur" auf dem Schlauch und seh den Wald vor lauter Bäumen nicht mehr. ;(

    Freue mich auf eure Unterstützung
    Zuletzt geändert von DonTortelini; 23.04.2019, 13:28.

  • #2
    Ich habe den Fehler selber gefunden!
    Oh mein Gott... SORRY, hier meine Lösung


    PHP-Code:
    $sql "SELECT ma_text, std, ton, bem, time, psm_kst.kst_id, psm_kst.kst_bez, psm_lt.lt_id, psm_lt.lt_bez
            FROM psm_tb
            LEFT JOIN psm_kst ON psm_tb.kst_id = psm_kst.kst_id
            INNER JOIN psm_lt ON psm_tb.lt_id = psm_lt.lt_id
            WHERE psm_tb.ma_id = '
    $ma_id'"

    Falls auch mal wer probleme hat, kann man sich ein wenig daran halten

    Kommentar


    • #3
      ....interessant, hab sowas immer mit CROSS JOIN erledigt und das kartesische Produkt mittels WHERE-Bedingungen gefiltert.
      Fand ich übersichtlicher und ist teilweise schneller in der Ausführung bei kleinen Tabellen.
      Wäre mal zu testen wie die Performance bei großen Tabellen ist ;-)

      Kommentar

      Lädt...
      X