• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Abfrage aus 2 Tabellen

altilux

Neues Mitglied
Hallo Leute,


ich hab schon ein wenig gegoogelt, werde jedoch aus den Ergebnissen nicht so recht schlau...

Kurze Problembeschreibung
  • Ich habe zwei Tabellen (benutzer und bewertung)
  • In Tabelle bewertung steht die emailadresse von einem benutzer, die bei der ausgabe mit dem Namen des Benutzers aus der TAbelle benutzer ersetzt werden soll
Mein BASIC

PHP:
$sql = mysql_query("SELECT * FROM `bewertung` WHERE anbieter = '$name' AND art = 'anbieter' AND freigabe = 1 ORDER BY datum DESC LIMIT 5 "); 
while ($data = mysql_fetch_assoc($sql)) 
{ 
      $bewertung_id   = $data["id"];
      $benutzer         = $data["benutzer"];
      $sterne            = $data["sterne"];
      $bewertung       = $data["bewertung"];
      $datum_db        = $data["datum"];
                $datum = date("d.m.Y", $datum_db);

// AUSGABE
                                    
 echo                         "<div class=\"wide\">
                             <div class=\"wide\"><p class=\"name\">". $benutzer."</p><p class=\"datum\">".$datum."</p><div class=\"wertung\"><img src=\"../images/".$sterne_bild."" width=\"79\" height=\"15\" alt=\"".$sterne." Sterne Bewertung\" /></div></div>
                             <p>".$bewertung."</p>
                             <div class=\"trenner\">&nbsp;</div>
                          </div>";

Im oberen Ansatz wird die eMailadresse des Benutzers ausgegeben, was so nicht gewollt war, dh soll die zweite Tabelle aufgerufen werden:
PHP:
(...)

$bewertung_id    = $data["id"];
$email            = $data["benutzer"];
                                
$sql = mysql_query("SELECT vorname FROM `$db_benutzer` WHERE email = '$email' "); 
while ($data = mysql_fetch_assoc($sql)) 
{ $benutzer = $data["vorname"]; }
                                
$sterne            = $data["sterne"];
$bewertung        = $data["bewertung"];

(...)
Diese Möglichkeit eine weitere Abfrage in eine Abfrage hinein zu basteln, geht in der Hinsicht schief, dass nur noch ein Datensatz ausgegeben wird...

Daher suche ich eine Möglichkeit, mit Inner join, oder Left join oder wie die Möglichkeiten heißen, eine Datenbankabfrage zu schaffen, in der auf einmal korrekt abgefragt wird...

Hier nochmal die DB Felder:

BENUTZER
id
name
vorname (soll anhand der email gefunden und ausgegeben werden)
email (steht in bewertung als benutzer)
passwort
geboren
group
freigabe

BEWERTUNG
id
benutzer (email aus benutzer)
anbieter
art
fachrichtung
bewertung
sterne
freigabe
datum
bezeichnung



Kann mir da jemand helfen?

DANKE!


Grüße,
Altilux
 
Wie kommt denn die Verknüpfung zwischen den beiden Tabellen zustande? Ich kann momentan nur die Spalte "benutzer" ausmachen die in benutzer der Spalte "email" entspricht. Daher frage ich mich wieso Du überhaupt die Spalte "email" aus der anderen Tabelle haben willst, wenn Du sie ohnehin schon hast?
 
In der Tabelle bewertung soll der Benutzer durch seine email Adresse eindeutig indentifiziert werden.
Bei der Ausgabe der Bewertungen soll jedoch nicht die email ausgegeben werden (Datenschutz), sondern der Vorname des Benutzers, welcher sich in der Tabelle Benutzer befindet und durch die eMail Adresse gefunden und ausgegeben werden soll
 
Hier die unschöne Lösung

PHP:
$sql = mysql_query("SELECT * FROM `bewertung` WHERE bezeichnung = '$name' AND art = '$art' AND freigabe = 1 ORDER BY datum DESC LIMIT 5"); 
while ($data = mysql_fetch_assoc($sql)) 
{ 
    $bewertung_id = $data["id"];
    // $benutzer = $data["benutzer"];
    $email = $data["benutzer"];
    $sterne = $data["sterne"];
    $bewertung = $data["bewertung"];
    $anbieter = $data["anbieter"];
    $datum_db = $data["datum"];
    $datum = date("d.m.Y", $datum_db);
   
    // NAME DES BENUTZERS HERAUSFINDEN
    $sql2 = mysql_query("SELECT vorname FROM `$db_benutzer` WHERE email = '$email' "); 
    while ($data = mysql_fetch_assoc($sql2)) 
    { $benutzer = $data["vorname"]; }
}

Keiner eine Idee, wie man das in einer Abfrage umsetzen kann?
 
Zurück
Oben