Abfrage nicht in schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage nicht in schleife

    heiho


    wider mal ne frage:

    ich hab 2 tabellen...
    tbl_users und tbl_firmen

    die users arbeiten in den firmen und haben eine firmenId die der Id der FIrmentabelle entspricht...

    ok

    weiter:

    ich hab es mit einem join geschaft diese zu verbinden
    jedoch zu meiner frage: ich habe pro firma noch einen firmenverantwortlichen
    diese möcht ich auch noch ausgeben, aber dafür brauche ich noch eine datenbankabfrage in der schleife....
    dies ist ja nicht so toll
    hier mein code wäre super wenn mir jemand einen tipp geben könnte:


    PHP-Code:
    <?php
    $mysqlServer 
    "localhost";
    $mysqlUser "root";
    $mysqlPw "";

    $connection mysql_connect($mysqlServer$mysqlUser$mysqlPw);
    mysql_select_db("vwkbeo",$connection);
    ?>
    <html>
    <head>
        <title>Testdatenbankvervibdung</title>
    </head>

    <body>
    <?php

        $sql 
    "SELECT * FROM tbl_users INNER JOIN tbl_firmen ON tbl_users.FirmenId = tbl_firmen.ID";
        
    $result mysql_query($sql);

        while(list(
    $id$name$vorname$mail$strasse$plz$ort$firmenId$Raum$fid$fname$fmail$fstrasse$fplz$fort$fansprpartid) = mysql_fetch_row($result))
        {
            echo 
    "<br>";
            echo 
    "Name: ";
            echo 
    $name.", ".$vorname;
            echo 
    "<br>";
            echo 
    "Arbeitet in: ";
            echo 
    $fname;
            echo 
    "<br>";
            echo 
    "<br>";
            echo 
    "Ansprechpartner der <b>".$fname."</b>: ";
            
    $sql2 "SELECT name, vorname FROM tbl_users WHERE id='$fansprpartid';";
            
    $result2 mysql_query($sql2);
            list(
    $fansprpartname$fansprpartvorname) = mysql_fetch_row($result2);
            echo 
    $fansprpartvorname." ".$fansprpartname;
            echo 
    "<br>";
            echo 
    "<br>";
        }
    ?>
    </body>
    </html>
    First: Things get worse under pressure.
    Second: If anything just cannot go wrong, it will anyway
    Third: A falling object will always land where it can do the most damage.

  • #2
    Pack doch einfach noch einen JOIN hinten drauf.

    SELECT * FROM tbl_users INNER JOIN (tbl_firmen INNER JOIN tbl_users ON tbl_firmen.fansprpartid = tbl_users.id) ON tbl_users.FirmenId = tbl_firmen.ID

    Hab´s nicht getestet, müßte aber klappen.
    Gruß oms
    {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

    Kommentar


    • #3
      hmmm, dat funzt nich

      PHP-Code:
      WarningSupplied argument is not a valid MySQL result resource in c:\apache\htdocs\vwk\test.php on line 34 
      und das ist diese zeile:

      PHP-Code:
      while(list($id$name$vorname$mail$strasse$plz$ort$firmenId$Raum$fid$fname$fmail$fstrasse$fplz$fort$fansprpartid) = mysql_fetch_row($result)) 
      First: Things get worse under pressure.
      Second: If anything just cannot go wrong, it will anyway
      Third: A falling object will always land where it can do the most damage.

      Kommentar


      • #4
        da hat das sql statement einen Fehler, falsche Tabelle, falscher Spaltenname, o.ä.! schau mal alles nach (oder der Join (der 3.) ist falsch...

        gruss

        Kommentar


        • #5
          Jetzt weiß ich nicht, ob meine Abfrage Asche ist, oder ob es nur an dem list liegt. Deine Abfrage hat natürlich jetzt ein paar mehr Spalten. Da ist das * jetzt nicht so toll. Teste die Abfrage einfach mal direkt von der Konsole oder aus PHPMyAdmin.
          {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

          Kommentar


          • #6
            PHP-Code:
            You have an error in your SQL syntax near '(tbl_firmen INNER JOIN tbl_users ON tbl_firmen.AnsprPartId = tbl_users.id)  ON t' at line 1 
            ???
            das kommt bei phpmyadmin raus
            First: Things get worse under pressure.
            Second: If anything just cannot go wrong, it will anyway
            Third: A falling object will always land where it can do the most damage.

            Kommentar


            • #7
              Ich hab´s nochmal mit der alternativen equi-join Syntax zusammengestzt:

              SELECT *
              FROM tbl_users AS Nutzer, tbl_firmen AS Firma, tbl_users AS Ansprechpartner
              WHERE Nutzer.FirmenId = Firma.ID AND Firma.AnsprPartId = Ansprechpartner.id;

              Also bei funktioniert es jetzt so. Schau dir die Ergebnistabelle mal an und ändere dann den * entsprechend den gesuchten Attributen.

              Gruß oms
              {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

              Kommentar


              • #8
                yes! super!
                danke das war toll
                jetz kann ich weiter machen!!!!


                danke nochma!
                First: Things get worse under pressure.
                Second: If anything just cannot go wrong, it will anyway
                Third: A falling object will always land where it can do the most damage.

                Kommentar


                • #9
                  wie selektiere ich nun genau die einzelnen spalten, die ich möchte???
                  First: Things get worse under pressure.
                  Second: If anything just cannot go wrong, it will anyway
                  Third: A falling object will always land where it can do the most damage.

                  Kommentar


                  • #10
                    Tabellenalias1.Spaltenname1, Tabellenalias1.Spaltenname2, Tabellenalias2.Spaltenname1 usw.

                    Bei dir zum Beispiel:
                    Nutzer.id, Nutzer.name, Nutzer.Vorname, Firma.fname, Firma.fort, Ansprechpartner.name, Ansprechpartner.vorname

                    oms
                    {brigens Ein Kezboard/Treiber ist v;llig [berfl[ssig!

                    Kommentar


                    • #11
                      jeppa!
                      mann, ich muss wider einmal sql lernen!
                      vielen dank, warst mir ne grosse hilfe!!
                      First: Things get worse under pressure.
                      Second: If anything just cannot go wrong, it will anyway
                      Third: A falling object will always land where it can do the most damage.

                      Kommentar

                      Lädt...
                      X