Personal Homepage, Tutorials & Blog

PHP & MySQL: Mehrere Tabellen auswählen und abfragen

PHP & MySQL: Mehrere Tabellen auswählen und abfragen

1. Mai '10

Oft stehen Daten, die abgefragt werden, nicht immer in der gleichen Tabelle, sollen jedoch in einer gemeinsamen Abfrage ausgegeben werden. Die Verknüfung zwischen den Tabellen(-zeilen) wird durch eine Spalte „ID“ gegeben, die in beiden Tabellen existiert und denselben Wert aufweist. Für diese Anleitung setze ich diesen Artikel voraus.

Schritt 1: Stellen Sie eine Verbindung her

Wird in diesem Artikel beschrieben.

<?php require_once ('connect.php'); ?>

Schritt 2: Tabelleninhalte

Im Folgenden nehme ich an, dass die Tabelle „login“ folgende Spalten enthält: user_id, user_name, user_passwort. Die Tabelle „daten“ soll folgende Spalten enthalten: user_id, telefon, e-mail, fax.
Die Zeile user_id soll in beiden Tabellen identisch sein.

Schritt 3: MySQL Abfrage

$sql = "SELECT user_name, telefon, e-mail FROM login l, daten d WHERE l.user_id = d.user_id";
$result = mysql_query( $sql );
    if ( ! $result )
        {
        die('Ungültige Abfrage: ' . mysql_error());
        }

Erklärung

SELECT user_name, telefon, e-mail stellt die gewünschten Datensätze zur Verfügung. Sollte ein Datensatz in beiden Tabellen vorhanden sein, muss definiert werden, aus welcher Tabelle die Daten genommen werden. Dies geschieht mit login l, daten d. Das „l“ bzw. „d“ definiert die Abkürzung für die jeweilige Tabelle. Mit l.user_id wird definiert, dass die Daten aus der Tabelle „login“ genommen werden sollen.
WHERE l.user_id = d.user_id verknüpft die beiden Tabellen, so dass die Daten aus Tabelle „login“ auch den Userdaten aus Tabelle „daten“ entsprechen.

 

Wenn Ihnen dieser Artikel gefallen hat, oder Sie Anregungen/Kritik haben, würde ich mich freuen, wenn Sie einen Kommentar schreiben oder das RSS Feed abonnieren, um immer automatisch über die neuesten Artikel auf dieser Seite informiert zu werden. Sie dürfen diesen Artikel oder die gesamte Seite auch gerne verlinken.

1 Kommentar

  1. Hallo,Danke für dein Tutorial.

    Ich habe hier ein kleines Problem, und brauche dringend eine Lösung.
    Ich versuche eine MySQL Datenbank abfrage über 2 Tabellen zu realisieren.
    beide Tabellen haben 1 identische Spalte (dattim).
    Ich möchten den Wert aus „dattim“ aus der Tabelle „data“ auswerten. „dattim“ in „dht22“ ist uninterressant.
    Meine Abrfrage sieht wie folgt aus:

    $link = mysql_connect("localhost", "Name", "Passwort")     // Anmelden bei der Datenbank
    or die("Keine Verbindung moeglich: " . mysql_error() . "<br>");
    mysql_select_db("aqua") or die("Auswahl der Datenbank fehlgeschlagen<br>");
    $query = "SELECT UNIX_TIMESTAMP(dattim), Innen, Aqua1, Aqua2, Aqua3, dattim, luft, temp FROM data l, dht22 d WHERE l.dattim  = d.dattim";
    //$query = "SELECT UNIX_TIMESTAMP(dattim), Innen, Aqua1, Aqua2, Aqua3, dattim, luft, temp  FROM login l, daten d WHERE l.user_id = d.user_id";
    $result = mysql_query( $query );
        if ( ! $result )
            {
            die('Ungültige Abfrage: ' . mysql_error());
            }
    $result = mysql_query($query)
    or die(mysql_error());
    fwrite($fh, $query); fwrite($fh, "\n");
    ........................................

    Die beiden Tabellen sehen wie folgt aus:
    data:

    dht22:

    Und ich bekomme immer die Fehlermeldung:

    Ungültige Abfrage: Column ‚dattim‘ in field list is ambiguous

    Wo ist der Fehler? Ich stehe total auf dem Schlauch.
    Vielen Dank im Voraus die Unterstützung.

    LG Markus

Einen Kommentar schreiben