[MySQLi] Abfragen aus mehrere Tabellen in einem QUery verknüft

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [MySQLi] Abfragen aus mehrere Tabellen in einem QUery verknüft

    Hallo zusammen,

    ja, kann sein, dass ich mich im Titel des Threads etwas unverständlcih ausdrücke.

    Erklärung dazu:

    Quellcode

    1. $ergebnis = $template->mysqli->query("SELECT id, name, klasse, bezahlt, scheibe_num, scheibe_alph, gruppe FROM ".$template->data_turnier->praefix."_teilnehmer WHERE verein = '".$_GET['id']."' ORDER BY gruppe ASC, scheibe_num ASC, scheibe_alph ASC");
    2. while ($row = $ergebnis->fetch_object())
    3. {
    4. $ergeb_1 = $template->mysqli->query("SELECT name FROM gruppen WHERE id = '".$row->gruppe."'");
    5. $ro_1 = $ergeb_1->fetch_object();
    6. $ergeb_2 = $template->mysqli->query("SELECT name, gebuehr FROM ".$template->data_turnier->praefix."_klassen WHERE id = '".$row->klasse."'");
    7. $ro_2 = $ergeb_2->fetch_object();
    8. }


    WIe kann ich den Query von $ergeb_1 und $ergeb_2 bei dem Query $ergebnis mit rein packen? Ich hab schon öfter gelesen, dass des geht, aber bisher hab ichs noch nie selber auf die Reihe gebracht.
    Könnte mir das vielleicht jemand auch Allgemein erklärn, also dass ich's dann acuh nicht nur für dieses Beispiel hinbekommen kann.

    Vielen Dank schonmal

    LG

    Fipsi
  • Ich hab mir den Link jez 3x durchgelesen und auch noch n bisschen gegoogelt.. ich verstehs immer noch nicht..

    Wenn nimmt man Left, Right oder INNER JOINT?
    Wie muss man die auszulesenen Zellen benennen?
    WIe genau ist der Query-Teil vom JOINT aufgebaut?

    Sorry, aber ich bin bissl schwer vom Begriff, wenns des angeht..

    Danke
  • Also du nimmst erstmal RIGHT oder LEFT JOIN, was da der Unterschied ist, ist glaub ich erstmal egal.

    Quellcode

    1. SELECT `tabelle1`.`id`, `tabelle2`.* FROM `tabelle1`
    2. LEFT JOIN `tabelle2` ON `tabelle1`.`id` = `tabelle2`.`user_id`
    3. WHERE `tabelle1`.`id` = '123';


    Ungefähr würde ich das so übersetzen:

    Quellcode

    1. Hol dir den Inhalt id von tabelle1 und alles von tabelle2 aus tabelle1 woran links tabelle2 angefügt wurde.
    2. Dabei muss aber die id von tabelle1 mit der user_id von tabelle2 übereinstimmen.
    3. Und beschränkt wird das ganze nur auf den eintrag von tabelle1 mit der id 123


    Da du zwei Tabellen hast, mit welchen du umgehen musst, brauchst du immer als erstes des Tabellenname bevor du einen spaltennamen ansprechen kannst. Verbunden werden diese mit einem Punkt.

    Ich hoffe, ich konnte dir das Ganze ein wenig näher bringen, bin auch kein Profi darin, muss auch immer ne Query holen und diese umschreiben.
  • :rolleyes: Natürlich ist es nicht egal, das hat bYemma aber auch nicht gemeint. Er hat lediglich gesagt, dass es für das grundlegende Verständnis was Joins tun egal ist.

    Und um das nochmal klar zu machen:
    Egal ob Left oder Rightjoin (right wird meistens nicht genommen, weil er eben genau dasselbe spiegelverkehrt tut), es werden alle Datensätze ausgegeben und mit Defaultwerten ergänzt im Gegensatz zum normalen inner join, der aufhört, sobald irgendwo ein Wert nichtmehr vorhanden ist.