Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Abfrage aus 3 Tabellen funzt nicht!

Einklappen

Neue Werbung 2019

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

  • MySQL Abfrage aus 3 Tabellen funzt nicht!

    Hallo ich habe ein recht kompliziertes Problem:

    Ich möchte aus 3 Tabellen, die mit einander verknüpft sind, bestimmte Werte ausgeben. Es handelt sich dabei um ein Immobilienverwaltungsprogramm in dem es Kunden, Immobilienobjekte und Dokumente gibt. Die Objekte werden den Kunden zugeordnet. Die Dokumente ebenfalls.


    TABELLE 1 "fa_pass0_data"
    ----------------------------------
    user_id
    Kundennummer
    Name
    Vorname


    TABELLE 2 "fa_pass0_login"
    ----------------------------------
    user_id
    reg_mail (E-Mailadresse des Kunden)


    TABELLE 3 "Mieter" (Objekte die einem Kunden zugewiesen worden sind, der Mieter des Objektes ist ist)
    -------------------------
    ObjektnummerM
    KundennummerM


    Nun möchte ich folgende Daten ausgeben. Den Namen, Vornamen und die Emailadresse des Kunden, der einem bestimmten Objekt zugeordnet ist.

    Ich habe zum Beispiel eine Objektenummer gegeben.
    Nach meinen Überlegungen überprüfe ich anhand der Objektnummer (wie gesagt, ist bereits gegeben), ob in der Tabelle "Mieter" dem Objekt Personen zugeordnet wurden. Anhand deren Kundennummern finde ich deren Namen aus der Tabelle "fa_pass0_data". Aus dieser Tabelle finde ich wiederum mittels der "user_id" die Emailadresse aus der Tabelle "fa_pass0_login". Also zwischen jeder Tabelle besteht ein Bindeglied.

    Ich habe das mal umgesetzt:

    Code:
    				$befehl4 = "
    
    				SELECT 
    						miet.ObjektnummerM,
    						miet.KundennummerM,
    						
    						data.user_id,
    						data.Name,
    						data.Vorname,
    						data.Kundennummer,
    		
    						login.user_id,
    						login.reg_mail
    						
    				FROM 
    						Mieter miet,
    						fa_pass0_data data,
    						fa_pass0_login login
    						
    				WHERE 
    						'$Objektnummer' = miet.ObjektnummerM
    						AND
    						miet.KundennummerM = data.Kundennummer
    						AND
    						data.user_id = login.user_id" or die(mysql_error());
    						
    
    				//Befehl4 ausführen
    				$befehl4ausfuehren = mysql_query($befehl4,$verbindung) or die (mysql_error());    
    
    				//Jede Zeile ausgeben
    				while ($ausgabe4 = mysql_fetch_array($befehl4ausfuehren))   
    						{
    						print "$ausgabe4[KundennummerM], $ausgabe4[Name]
    ";
    }
    Von der Logik her müßte das so stimmen, oder?

    Mein Problem ist, dass nur eine einzige Kundennummer, also nur ein Kunde, ausgegeben wird, obwohl 3 Kunden dem Objekt mit der Objektnummer zugeordnet sind.


    Für Deine Hilfe im Vorraus schon vielen Dank.

    Gruß,
    c-bass



    PS: Die Tabellenkonstruktionen müßen so stehen bleiben.
    // http://www.4Webworking.de
    // Das Ressourcenarchiv für Webworker

  • #2
    Re: MySQL Abfrage aus 3 Tabellen funzt nicht!

    Zitat von c-bass
    Mein Problem ist, dass nur eine einzige Kundennummer, also nur ein Kunde, ausgegeben wird, obwohl 3 Kunden dem Objekt mit der Objektnummer zugeordnet sind.
    Dann haben die andern eben keine Mail-Adresse zugeordnet. Versuchs mal so, dann findest du das schnell raus:
    PHP-Code:
    $befehl4 "
        SELECT miet.ObjektnummerM,
               miet.KundennummerM,          
               data.user_id,
               data.Name,
               data.Vorname,
               data.Kundennummer,
               login.reg_mail          
        FROM Mieter miet
        INNER JOIN fa_pass0_data data ON miet.KundennummerM = data.Kundennummer
        LEFT JOIN fa_pass0_login login ON data.user_id = login.user_id          
        WHERE miet.ObjektnummerM = 
    $Objektnummer";
                      
    //Befehl4 ausführen
    $befehl4ausfuehren mysql_query($befehl4) or die (mysql_error());   

    //Jede Zeile ausgeben
    while ($ausgabe4 mysql_fetch_array($befehl4ausfuehren))   
    {
          print 
    $ausgabe4['KundennummerM']. ", " 
                
    $ausgabe4['Name'] . " " 
                
    $ausgabe4['reg_mail'] . "
    "
    ;

    Gruss
    L

    Kommentar


    • #3
      also ich hab das mal überprüft. jeder kunde hat eine emailadresse.

      und wennich deines probiere, dann kommt eine merkwürdige fehlermeldung: "Unknown column 'K003' in 'where clause' " aber ich weiss gar nicht woher die rühren könnte.
      // http://www.4Webworking.de
      // Das Ressourcenarchiv für Webworker

      Kommentar


      • #4
        "K003" ist wohl der Wert der Variable $Objektnummer

        Kommentar


        • #5
          ah okay, das lag an zwei zeichen:

          WHERE miet.ObjektnummerM = $Objektnummer";

          musste sein:

          WHERE miet.ObjektnummerM = '$Objektnummer' ";

          aber nun geschieht genau das selbe wie vorher. es erscheint nur ein kunde!
          // http://www.4Webworking.de
          // Das Ressourcenarchiv für Webworker

          Kommentar


          • #6
            Was daran liegt, dass es nur einen Kunden mit dieser ObjeknummerM zu geben scheint.

            Kommentar


            • #7
              Was daran liegt, dass es nur einen Kunden mit dieser ObjeknummerM zu geben scheint.
              so ähnlich, danke für den tipp. der fehler war, das die kunden eigentlich gar nicht mehr existierten, sondern nur noch in der tabelle mieter als zuordnung waren und die zuordnung nicht gelöscht wurde, als der kunde gelöscht wurde.

              danke nochmal. ich hätte mir wahrscheinlich daran die zähne ausgebissen!!
              // http://www.4Webworking.de
              // Das Ressourcenarchiv für Webworker

              Kommentar

              Lädt...
              X