# Inner Join: Daten aus der gleichen Tabelle



## junior00 (18. März 2008)

Ich habe in der Tabelle „objekteliste“ 2 verschiedene id’s aus einer gleichen tabelle hinzugefügt die ich bauherr und architekt naante.
Nun möchte ich mit INNER JOIN die Daten beider id’s anzeigen lassen. Aber es ist nicht möglich da sie die id’s aus der gleichen Tabelle ist..
Weiss jemand eine Lösung?

<?
error_reporting(0);
$con = mysql_connect("localhost", "root", "***");
$db = mysql_select_db("zeiterfassung");
$id = $_GET["id"];
$res = mysql_query("SELECT objekteliste.*, firma.* FROM objekteliste INNER JOIN firma on objekteliste.bauherr = firma.id or objektelist.arichitekt");

while($row = mysql_fetch_array($res))
{
?>
<? echo $row["objnr"]; ?>
<? echo $row["objname"]; ?>
<? echo $row["projektleiter"]; ?>
<? echo $row["sachbearbeiter"]; ?>

<? echo $row["bauherr"]; ?>
<? echo $row["strasse"]; ?>
<? echo $row["plz"]; ?>
<? echo $row["ort"]; ?>

<? echo $row["architekt"]; ?>
<? echo $row["strasse"]; ?>
<? echo $row["plz"]; ?>
<? echo $row["ort"]; ?>


----------



## Bernd1984 (18. März 2008)

Hallo junior00,

schau mal hier: http://www.tutorials.de/forum/relat...ds-auf-die-gleiche-fremdtabelle-zugreift.html


----------



## junior00 (18. März 2008)

Es klappt immer noch nicht 

<?
error_reporting(0);
$con = mysql_connect("localhost", "root", "bseling08");
$db = mysql_select_db("zeiterfassung");
$id = $_GET["id"];
$res = mysql_query("SELECT * FROM objekteliste INNER JOIN
firma firma_1 ON objekteliste.bauherr = firma_1.uid INNER JOIN
firma firma_2 ON objekteliste.architekt = firma_2.uid 
");

while($row = mysql_fetch_array($res))
{
?>
<tr>
<td bordercolor="#FFFFFF" width="97">
<? echo $row[""]; ?>
&nbsp;</td>
<td bordercolor="#FFFFFF" width="227">
<? echo $row["objname"]; ?>
&nbsp;</td>
<td bordercolor="#FFFFFF" width="19">
<? echo $row["projektleiter"]; ?>
&nbsp;</td>
<td bordercolor="#FFFFFF" width="19">
<? echo $row["sachbearbeiter"]; ?>
&nbsp;</td>
<td bordercolor="#FFFFFF" width="254">

<? echo $row["bauherr"]; ?>
&nbsp;<br>
<? echo $row["strasse"]; ?>
&nbsp;<br>
<? echo $row["plz"]; ?>
&nbsp;
<? echo $row["ort"]; ?>
&nbsp;
</td>
<td bordercolor="#FFFFFF" width="254">
<? echo $row["architekt"]; ?>
&nbsp;<br>
<? echo $row["strasse"]; ?>
&nbsp;<br>
<? echo $row["plz"]; ?>
&nbsp;
<? echo $row["ort"]; ?>
&nbsp;
</td>
<td bordercolor="#FFFFFF" width="254">
<? echo $row["notiz"]; ?>
&nbsp;
</td>

<?
}
?>


----------



## RS9999 (18. März 2008)

Schau Dir einmal etwas über das Thema "Normalisierung von Datenbanken" an.
Und dann versuche es einmal hiermit:


```
<?php
     $select = 'SELECT
                            *
                  FROM    
                            `tab1` `A` LEFT OUTER JOIN `tab2` `B` 
                    ON
                            `A`.`id` = `B`.`id`
                 WHERE    
                            `A`.`id` = "'.mysql_real_escape_string($_GET['id']).'"
               ';
?>
```


----------



## Bernd1984 (18. März 2008)

Hallo junior00,

der SQL ist in Ordnung.

Dann liegt es evtl. an den Daten.
Poste doch mal ein paar Daten und dein gewünschtes Ergebnis.


PS: Bitte den CODE-Tag benutzen!


----------



## junior00 (18. März 2008)

Also ich hab eine Tabelle "objekteliste" (objnr, objname, bauherr, architekt)
Und es hat noch eine Tabelle "firma" (id, name, strasse, plz, ort)

Im Feld bauherr und architekt habe ich je eine firma(id) ausgewählt.
---------------------------
ein beispiel:
objekteliste
objnr = 111
objname = city
bauherr = 5
architekt = 2

firma
id = 5
name = schild
strasse = schildstrasse
plz = 5000
ort = berlin

und..

firma 
id = 2
name = nesle
strasse = str
plz = 3000
ort = amst.
--------------------------

im objekteliste, objnr 111 gehört ja als bauherr firma id 5 und architekt firma id 2.
ich möchte von diesen dreien alle daten wie objnr, objname, strasse von bauherr, strasse von architekt etc anzeigen lassen...

bis jetzt war mir nur möglich nur ein einer firma alles anzeigen zu lassen...


----------



## Bernd1984 (18. März 2008)

Hallo ,

der Sql mit deinen Daten funktioniert doch:

```
SELECT     objekteliste.objnr, objekteliste.objname, firma_1.name AS Bauherr_Name, firma_1.strasse AS Bauherr_Str, firma_1.plz AS Bauherr_Plz, 
                      firma_1.ort AS Bauherr_Ort, firma_2.name AS Architekt_Name, firma_2.strasse AS Architekt_Strasse, firma_2.plz AS Architekt_PLZ, 
                      firma_2.ort AS Architekt_Ort
FROM         objekteliste INNER JOIN
                      firma firma_2 ON objekteliste.architekt = firma_2.uid INNER JOIN
                      firma firma_1 ON objekteliste.bauherr = firma_1.uid
```
Hier das Ergebnis
	
	
	



```
objnr    objname    Bauherr_Name    Bauherr_Str    Bauherr_Plz    Bauherr_Ort    Architekt_Name    Architekt_Strasse    Architekt_PLZ    Architekt_Ort
111    city    schild    schildstrasse    5000    Berlin    nesle    str    30001    amst.
```
Dies geht aber nur, wenn die Werte beider Felder (Bauherr und Architekt) in objekteliste auch in uid einen Eintrag haben.
Ansonsten musst du einen LEFT OUTER JOIN benutzten: 
	
	
	



```
SELECT     objekteliste.objnr, objekteliste.objname, firma_1.name AS Bauherr_Name, firma_1.strasse AS Bauherr_Str, firma_1.plz AS Bauherr_Plz, 
                      firma_1.ort AS Bauherr_Ort, firma_2.name AS Architekt_Name, firma_2.strasse AS Architekt_Strasse, firma_2.plz AS Architekt_PLZ, 
                      firma_2.ort AS Architekt_Ort
FROM         objekteliste LEFT OUTER JOIN
                      firma firma_2 ON objekteliste.architekt = firma_2.uid LEFT OUTER JOIN
                      firma firma_1 ON objekteliste.bauherr = firma_1.uid
```


```
objnr    objname    Bauherr_Name    Bauherr_Str    Bauherr_Plz    Bauherr_Ort    Architekt_Name    Architekt_Strasse    Architekt_PLZ    Architekt_Ort
111    city    schild    schildstrasse    5000    Berlin    nesle    str    30001    amst.
112    C2
```


----------



## junior00 (18. März 2008)

Besten Dank für soviel Mühe..

Ich komme aber immer noch nicht weiter.. bin noch ein Anfänger Bereich Datenbank, muss aber für meine Firma eine Zeiterfassung erstellen..

Hab die Formeln eingefügt, aber es kommt gar nix..weiss nicht wot der Fehler liegt
Hier nochmals die formeln:


```
$res = mysql_query('
SELECT objekteliste.objnr, objekteliste.objname, firma_1.name AS bauherr_name, firma_1.strasse AS bauherr_Str, firma_1.plz AS bauherr_Plz, 
                      firma_1.ort AS bauherr_ort, firma_2.name AS architekt_name, firma_2.strasse AS architekt_strasse, firma_2.plz AS architekt_plz, 
                      firma_2.ort AS architekt_ort
FROM objekteliste LEFT OUTER JOIN
                      firma firma_2 ON objekteliste.architekt = firma_2.uid LEFT OUTER JOIN
                      firma firma_1 ON objekteliste.bauherr = firma_1.uid
');

while($row = mysql_fetch_array($res))
{
?>

<? echo $row["objnr"]; ?>
<? echo $row["bauherr_name"]; ?>
<? echo $row["architekt_name"]; ?>
```


----------

