Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Mit Wert bestimmte Spalten auslesen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von TheTrashinger, 31 Januar 2017.

  1. TheTrashinger

    TheTrashinger Neuer Benutzer

    HeyHo,
    Ich habe 3 Tabellen (Kunden, Fahrzeuge, Aufträge)

    In Aufträge: [id, auftragsnr, fahrzeugnr, kundennr, datum]
    In Kunden: [id, kundennr, vorname, nachname, usw...]
    In Fahrzeuge: [id, fahrzeugnr, kundennr, marke, modell, usw...]

    Nun habe ich eine Seite die mir per SELECT die Werte von der "Aufträge"-Tabelle ausließt.
    Was auch wunderbar funktioniert.
    PHP:
    $sql_ergebniss "SELECT * FROM auftrag ORDER BY datum";
              
    $ergebniss $conn->query($sql_ergebniss);
             
              if (
    $ergebniss->num_rows 0){
                  while(
    $row $ergebniss->fetch_assoc()){
                      echo 
    $row["auftragsnr"];
                      echo 
    $row["kundennr"] ;
                      echo 
    $row["fahrzeugnr"];
                      echo 
    $row["datum"];
                  }
                 
              } else {
                  echo 
    "<h2>Keine Aufträge vorhanden!</h2>";
              }
    Nun möchte ich aber in einer Tabelle nicht einfach die "kundennr" angezeigt bekommen, sondern Vornamen, Nachnamen usw, von der "Kunden"-Tabelle anzeigen lassen und die "Marke, Modell usw." von der "Fahrzeug"-Tabelle.

    Ich habe einen Versuch gestartet, aber das ergibt keinen Sinn :D.
    PHP:
    $sql_kundennr "SELECT kundennr FROM auftrag";
              
    $ergebniss $conn->query($sql_ergebniss);
             
              if (
    $ergebniss->num_rows 0){
                  while(
    $row $ergebniss->fetch_assoc()){
                      
    $z_kundennr $row["kundennr"];
                  }
                 
              }
        
    $o_kundennr "SELECT * FROM kunden WHERE kundennr IN ('" $z_kundennr ."')";
            
    $o_kundener $conn->quer<($o_kundennr);
           
            if (
    $o_kundener->num_rows 0){
                
    $z_vorname $row["vorname"];
                
    $z_nachname $row["nachname"];
            }

       
        
    $a_vorname $z_vorname;
        
    $a_nachname $z_nachname;
    Ich komm einfach nicht auf die Lösung für mein Problem. Eventuell könnte "JOIN" helfen, aber bei der Funktion blick ich nicht durch.:oops:

    Danke schon mal fürs Durchlesen :cool:
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Ja, genau. Du suchst einen JOIN.

    Code:
    select a.datum, a.auftragsnr, k.name from auftraege a left join kunden k on a.kundennummer=k.id
    
    So in der Art. Joins sind MASSIG beschrieben, einfach mal Google bemühen. Keine Abfragen in Schleifen, keine Verwendung von * im Select-Teil.
     
    TheTrashinger gefällt das.
  3. TheTrashinger

    TheTrashinger Neuer Benutzer

    Hat mit einen "LEFT JOIN" funktioniert.:D

    Code:
    SELECT auftrag.auftragsnr, kunden.Vorname, kunden.Nachname, auftrag.datum FROM auftrag LEFT JOIN kunden ON auftrag.kundennr=kunden.kundennr ORDER BY auftrag.datum
    Kann man bei einem JOIN auch 3 Tabellen "auslesen" mit AND oder OR?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Du kannst nahezu beliebig viele Tabellen via JOIN verbinden. Ein Freund hat es mal mit einer Million gemacht. Das aber mit einer richtigen Datenbank, also nicht MySQL.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden