Otto Marks: Daten aus zwei Tabellen (MySQL) ausgeben

Hallo,

ich habe ein Problem und zwar bekomme ich es nicht hin über den Schlüssel von Tablle content den titel von frame_links oder den titel von frame_rechts auszugeben.

Also ich habe folgendes:

xxcontent
-------------------------------------------------
titel   |   content  |   id_links   |   id_rechts

frame_links
----------------------------------
id_links  |   titel   |    content

frame_rechts
---------------------------------
id_rechts |  titel    |   content

In meiner Ausgabe möchte ich dann alle titel bekommen aber ich bekomme nur die Ausagebe von content.titel

So sieht meine SQL Befehl aus:

SELECT * FROM xxcontent LEFT JOIN frame_links ON xxcontent.id_links = content_links.id_links
LEFT JOIN frame_rechts ON content.id_rechts = frame_rechts.id_rechts

was ist hier falsch?

oder wie mache ich eine ausgabe in php?

momentan mache ich die ausgabe so:

$row['titel'] gibt es hier auch die möglichkeit zusagen ich möchte nur frame_links.titel bloss wie sähe das dann aus?

  1. Hi!

    xxcontent

    titel   |   content  |   id_links   |   id_rechts

    frame_links

    id_links  |   titel   |    content

    frame_rechts

    id_rechts |  titel    |   content

    SELECT
      *
    FROM
      xxcontent
    LEFT JOIN frame_links
      ON xxcontent.id_links = content_links.id_links
    LEFT JOIN frame_rechts
      ON content.id_rechts = frame_rechts.id_rechts

    was ist hier falsch?

    content_links? Welche Tabelle soll das sein?

    oder wie mache ich eine ausgabe in php?

    momentan mache ich die ausgabe so:

    $row['titel'] gibt es hier auch die möglichkeit zusagen ich möchte nur frame_links.titel bloss wie sähe das dann aus?

    Wenn Du nur links willst, wieso dann dern Join auf 2 Tabellen?

    Zum einen hast Du wie gesagt ein Problem  mit der SQL-Abfrage, was Du auch hättest erfahren können wenn Du nach mysql_query() folgende Zeile eingefügt hättest:

    echo mysql_error();

    das hätte Dir was ausgegeben, der Art "Tabellenname nicht gefunden..."
    (Bitte ausprobieren damit Du es fürs nächste mal behälst!)

    Außerdem hast Du das Problem, dass beide Spalten gleich heißen, woher soll dann PHP/MySQL wissen welchen Titel Du jetzt haben willst?

    Daher würde ich sowas vorschlagen:

    SELECT
      frame_rechts.titel as titel_rechts,
      frame_links.titel as titel_links,
      frame_rechts.content as content_rechts,
      frame_links.content as content_links
    FROM
    ...

    das kannst Du dann im Script über $row['titel_rechts'] .. abfragen. Aber bedenke dass Du nur die Spalten "selektieren" solltest, die Du auch tatsächlich brauchst, und vor allem solltest Du nur auf die Tabellen joinen, die Du brauchst.

    Und noch ein Hinweis, wenn Du nicht weißt was genau Dir MySQL zurückgibt, schreibe mal statt einfach blind zu probieren wie echo $row['titel']:

    var_dump($row);

    Da bekommst Du dann genaue Infos was genau Dir MySQL zurückgegeben hat, probiere das am besten auch  mal aus!

    Lese Dir auch sorgfältig http://de3.php.net/mysql durch, da lernst Du dann auch die ganzen Dir zur Verfügung stehenden Funktionen kennen, man musst nicht direkt alles anwendern oder 100%ig verstehen, es ist aber schon ein großer Vorteil wenn man weiß was es so alles gibt.

    Grüße
    Andreas

    1. Hi!

      SELECT
        *
      FROM
        xxcontent
      LEFT JOIN frame_links
        ON xxcontent.id_links = content_links.id_links
      LEFT JOIN frame_rechts
        ON content.id_rechts = frame_rechts.id_rechts

      und hier ist noch ein Fehler drin sehe ich gerade, welcher sagt Dir sicher "echo mysql_error();"

      ;-)

      Grüße
      Andreas

    2. frame_rechts.titel as titel_rechts,

      heisst das frame_rechts.titel unbenannt wird auf titel_rechts?

      oder genauer gesagt ein alias vergeben wird?

      weil as finde ich unter mysql nirgends...

      1. Hallo!

        frame_rechts.titel as titel_rechts,

        heisst das frame_rechts.titel unbenannt wird auf titel_rechts?

        oder genauer gesagt ein alias vergeben wird?

        genau das.

        weil as finde ich unter mysql nirgends...

        Aber alias: http://www.mysql.com/doc/de/Problems_with_alias.html#IDX1728

        Grüße
        Andreas

        1. Hi!

          weil as finde ich unter mysql nirgends...

          Aber alias: http://www.mysql.com/doc/de/Problems_with_alias.html#IDX1728

          Und auch in der SELECT Referenz steht es in einem der ersten Sätze:

          http://www.mysql.com/doc/de/SELECT.html#IDX1332

          Grüße
          Andreas