T o M: SQL Syntax

Hallo zusammen,

ich stehe gerade ein wenig auf dem Schlauch bei einer SQL Abfrage. Kann mir evtl. jemand weiterhelfen?

Ich habe zwei Tabellen:
tbl_1: Mitglieder mit id,name,...
tbl_2: Buecher mit id,autorid,coautorid,titel,bildname,...

Ich möchte nun alle Bücher aus tbl 2 auslesen und zusätzlich den Namen des Autors (Feld autorid) aus der Mitglieder Tabelle sowie den Namen des CoAutors (Feld coautorid) aus der Mitglieder Tabelle.

Mein bisheriger Versuch sieht so aus, funktioniert aber nicht richtig...

  public function & getBooks(){  
    $tbl_1  = "mitglieder";  
    $tbl_2  = "buecher";  
  
    $sqlAbfrage = "SELECT ".$tbl_1.".name AS autorName,".$tbl_1.".name AS coautorName,".$tbl_2.".id AS idBook,".$tbl_2.".autorid,".$tbl_2.".coautorid,".$tbl_2.".titel,".$tbl_2.".bildname  
                   FROM ".$tbl_1."  
                     INNER JOIN ".$tbl_2."  
                       ON ".$tbl_2.".autorid = ".$tbl_1.".id  
                       OR ".$tbl_2.".coautorid = ".$tbl_1.".id  
                               ORDER BY ".$tbl_2.".position";  
  }

Ich seh auch das es so nicht wirklich gehen kann, weiß aber auch nicht wie es richtig ist... Kann mir hierbei jemand weiterhelfen?

Besten Dank
T o M

  1. Das ganze könnt man schön in einem einzigen String schreiben, ohne den durch die Variablen zu zerreißen. Das nimmt die ganze Übersicht.

    Du musst die Tabelle zweimal dazu joinen, einmal für den Autor und einmal für den CoAutor.

    1. Das ganze könnt man schön in einem einzigen String schreiben, ohne den durch die Variablen zu zerreißen. Das nimmt die ganze Übersicht.

      Du musst die Tabelle zweimal dazu joinen, einmal für den Autor und einmal für den CoAutor.

      Hallo Encoder,

      danke, das wars...:

        
          $tabelle_1  = "mitglieder";  
          $tabelle_2  = "buecher";  
        
          $sqlAbfrage = "SELECT  
                           books.id AS idBook, books.autorid, ma1.name AS autorName, books.coautorid, ma2.name AS coautorName,  
                           books.titel, books.buchautor, books.bildname  
                         FROM  ".$tabelle_2." books  
                         LEFT JOIN ".$tabelle_1." ma1  
                           ON ma1.id = books.autorid  
                         LEFT JOIN ".$tabelle_1." ma2  
                           ON ma2.id = books.coautorid  
                         ORDER BY books.position";  
      
      
  2. Hi,

    Ich habe zwei Tabellen:
    tbl_1: Mitglieder mit id,name,...
    tbl_2: Buecher mit id,autorid,coautorid,titel,bildname,...

    Ich möchte nun alle Bücher aus tbl 2 auslesen und zusätzlich den Namen des Autors (Feld autorid) aus der Mitglieder Tabelle sowie den Namen des CoAutors (Feld coautorid) aus der Mitglieder Tabelle.

    Mein bisheriger Versuch sieht so aus, funktioniert aber nicht richtig...

    ``

    Zunächst: wenn du ein Problem mit einer DB-Abfrage hast, dann poste den SQL-Code und nicht PHP. Das würde es allen erleichtern, dir zu helfen.

    Neben den Tipp mit den JOINs würde ich dir eher korrelierte Unterabfragen ans Herz legen.

    Bis die Tage,
    Matti