Verknüpfung INNER JOIN und Mysql

Dieses Thema Verknüpfung INNER JOIN und Mysql im Forum "Windows XP Forum" wurde erstellt von HendrikO, 27. Juni 2006.

Thema: Verknüpfung INNER JOIN und Mysql Hallo Folks, ich hab ein Problem, an dem ich jetzt schon einige Stunden hänge: Ich habe einen Datensatz auf 4...

  1. Hallo Folks,

    ich hab ein Problem, an dem ich jetzt schon einige Stunden hänge:

    Ich habe einen Datensatz auf 4 Tabellen aufgeteilt. Jetzt möchte ich alle Datensätze anzeigen und zwar mit ausgesuchten Spalten. Ich dachte mir etwas mit:

    Code:
    <?
    $sql=SELECT  * FROM .BEGLEITER. 
                               INNER JOIN .ORT. ON	.BEGLEITER..ORT_fk = .ORT..ID
                               INNER JOIN .SCHULE. ON.BEGLEITER..SCHULE_fk = .SCHULE..ID
                               INNER JOIN .SCHULART. ON .SCHULE..Schulart_fk = .SCHULART..ID
    ;
    	
    	$result = mysql_query($sql) OR die(mysql_error());	
    	while($all= mysql_fetch_assoc($result))	{
    		print_r($all);
    }
     ?>
    aber das funktioniert nicht (ich habe natürlich vorher eine Connect-Funktion benutzt). Ich bekomme immer nur einen Datensatz ausgegeben. Wenn ich die Abfrage etwas abändere (ohne inner join) dann bekomm ich ganz viele Datensätze zurück. Ich habe schon gegoogelt aber noch nix gefunden.

    Ich bräuchte einfach nur eine Abfrage, welche mir alle Details eines Datensatzes liefert, über mehrere Tabellen hinweg. Wie geht das?

    Danke für eure Hilfe
     
  2. OK, mal ein gedachtes Beispiel ;)

    Voraussetzung ist, dass in den Nebentabellen die ID der Haupttabelle ($tbl_1) gespeichert wird (z.B. id_fk).

    Code:
    <?php
    $tbl_1 = BEGLEITER;
    $tbl_2 = ORT;
    $tbl_3 = SCHULE;
    $tbl_4 = SCHULART;
    
    $sql = SELECT t1.*, t2.plz, t2.ort, t3.schulname, t4.schulart ; 
    $sql .= \n FROM . $tbl_1 . t1 ;
    $sql .= \n LEFT JOIN . $tbl_2 . t2 ON (t1.id=t2.id_fk) ;
    $sql .= \n LEFT JOIN . $tbl_3 . t3 ON (t1.id=t3.id_fk) ;
    $sql .= \n LEFT JOIN . $tbl_4 . t4 ON (t1.id=t4.id_fk) ;
    
    $result = mysql_query($sql) or die(mysql_error());
    
    if($num = mysql_num_rows($result)) {
    	while($obj= mysql_fetch_array($result, MYSQL_BOTH)) {
    		print_r($obj);
    		echo <hr>;
    	}
    }
    else {
    	echo Keine Datensätze gefunden.;
    }
    ?>
    
    Möchtest du z.B. nur Datensätze Gymnasien aus Stuttgart gelistet bekommen, hängst du hinten noch eine WHERE-Klausel drann.

    Code:
    $sql = .....
    $sql .= .....
    $sql .= \n WHERE t2.ort =->Stuttgart' AND t4.schulart =->Gymnasium';
    
    Hoffe ich habe deine Frage richtig verstanden :°, wenn nicht, war es aber gut das wir mal drüber gesprochen haben :2funny: :2funny:
     
  3. Hallo PCDConny,

    na schau mal einer guck, dat geht. Ich habe den Code noch etwas abgeändert, das Ausschlaggebende daran war das LEFT JOIN, statt Inner! Die Foreign-Keys hatte ich schon vorher gesetzt :coolsmiley:. Falls es jemanden interessiert hier noch mal der Code und besten Dank :1

    Code:
    $sql=SELECT 
    		.BEGLEITER..ID,
    		.BEGLEITER..Name,
    		.BEGLEITER..Vorname, 
    		.BEGLEITER..Straße, 
    		.BEGLEITER..Hausnummer, 
    		.ORT..PLZ, 
    		.ORT..Ort, 
    		.ORT..Ortsteil, 
    		.SCHULE..Schulname, 
    		.SCHULART..Schulart, 
    		.SCHULE..Klasse, 
    		.SCHULE..Schulort,
    		.BEGLEITER..Ausbildungsende, 
    		.BEGLEITER..Registrierungsdatum,
    		.BEGLEITER..Austritt,
    		.BEGLEITER..Aktiv		
    	FROM 
    		.BEGLEITER. 	
    			LEFT JOIN .ORT. 		ON	.BEGLEITER..ORT_fk = .ORT..ID
    			LEFT JOIN .SCHULE. 	ON 	.BEGLEITER..SCHULE_fk = .SCHULE..ID
    			LEFT JOIN .SCHULART.	ON	.SCHULE..Schulart_fk = .SCHULART..ID
    
    ;
    	$result = mysql_query($sql) OR die(mysql_error());	
    	while($all= mysql_fetch_assoc($result))	{
    		print_r($all);
    }
    
     
Die Seite wird geladen...

Verknüpfung INNER JOIN und Mysql - Ähnliche Themen

Forum Datum
Verknüpfungen anlegen Windows 10 Forum 2. Sep. 2015
Probleme bei Windows 8.1 NTUSER.Dat,Verknüpfungen Windows 8 Forum 27. Jan. 2015
Intrnet-Exporet Verknüpfung Windows 8 Forum 26. Jan. 2015
Verknüpfungen bearbeiten Windows 8 Forum 5. Okt. 2014
Kann ich eine Verknüpfung von einem Dokument auf den Startbildschirm legen ?? Windows 8 Forum 5. Okt. 2014