Drei Tabellen Joinen

EddieG

Erfahrenes Mitglied
hi,
versuche die ganzen inhalte von drei tabellen auslesen die tabellen haben teils den selben spalten namen.
ich habe es so versucht
PHP:
$sql_replays = mysql_query("SELECT *(SELECT* FROM 1n1_contens(SELECT*FROM 2n2_contents))FROM rw_contents WHERE username = '".$usernick."'");
while($ds_rep=mysql_fetch_object($sql_replays))
{
$g1=  $ds_rep->g1;             //kommt in 3 tabellen vor
$v1=  $ds_rep->v1;            //kommt in 3 tabellen vor
$vr1=  $ds_rep->vr1;        //kommt in 3 tabellen vor
$gr1=  $ds_rep->gr1;        //kommt in 3 tabellen vor
$g2=  $ds_rep->g2;        //kommt in 2 tabellen vor
$v2=  $ds_rep->v2; //kommt in 2 tabellen vor
$vr2=  $ds_rep->vr2; //kommt in 2 tabellen vor
$gr2=  $ds_rep->gr2; //kommt in 2 tabellen vor
$g3=  $ds_rep->g3; //kommt in 1 tabellen vor
$v3=  $ds_rep->v3;//kommt in 1 tabellen vor
$vr3=  $ds_rep->vr3;//kommt in 1 tabellen vor
$gr3=  $ds_rep->gr3;//kommt in 1 tabellen vor
$v4=  $ds_rep->v4;//kommt in 1 tabellen vor
$vr4=  $ds_rep->vr4;//kommt in 1 tabellen vor
$mu  =  $ds_rep->MU;     //kommt in 3 tabellen vor
$datum  =  $ds_rep->datum;    //kommt in 3 tabellen vor
$da=  $ds_rep->da;     //kommt in 3 tabellen vor
$upl=  $ds_rep->upl;     //kommt in 3 tabellen vor
$ptl=  $ds_rep->ptl;    //kommt in 3 tabellen vor
$ptw=  $ds_rep->ptw;    //kommt in 3 tabellen vor
$rpp=  $ds_rep->rpp;    //kommt in 3 tabellen vor
$map  =  $ds_rep->map;    //kommt in 3 tabellen vor
$gn=  $ds_rep->gn;    //kommt in 3 tabellen vor
$rkl=  $ds_rep->rkl;    //kommt in 2 tabellen vor
$rkw=  $ds_rep->rkw;    //kommt in 2 tabellen vor
}
das läuft jedoch alles andere als gut ;(
 
Hi,

gib den Feldern andere Namen, zum Beispiel:
Code:
SELECT g1 as g1_von_tabelle1 FROM foo
// Auslesen dann mit: $ds_rep->g1_von_tabelle1
 
hm ok dachte es geht so ohne das ich die einzelnen spalten nenne
habe es nun so versucht
PHP:
$usernick = $_GET['userrep'];
$sql_replays = mysql_query("SELECT t1.`username`, t1.`gewinner1`,t1.`verlierer1`,t1.`MU`,t1.`dauer`,t1.`datum`,t1.`uploader`,t1.`verliererRasse1`,t1.`gewinnerRasse1`,
t1.`gewinner2`,t1.`verlierer2`,t1.`verliererRasse2`,t1.`gewinnerRasse2`,t1.`gewinner3`,t1.`verlierer3`,t1.`verliererRasse3`,t1.`gewinnerRasse3`,t1.`verlierer4`,t1.`verliererRasse4`,
(SELECT t2.`gewinner2`,t2.`verlierer2`,t2.`MU`,t2.`dauer`,t2.`datum`,t2.`uploader`,t2.`verliererRasse2`,t2.`gewinnerRasse2`, t2.`gewinner1`,t2.`verlierer1`,t2.`verliererRasse1`,t2.`gewinnerRasse1`,t2.`username`,  FROM ladder_2n2_contens  WHERE t2.username = '".$usernick."'(SELECT t3.`gewinner1`,t3.`verlierer1`,t3.`MU`,t3.`dauer`,t3.`datum`,t3.`uploader`,t3.`username`, FROM ladder_1n1_contents  WHERE t3.username = '".$usernick."'))FROM ladder_racewar_contents WHERE t1.username = '".$usernick."'") or die(mysql_error());
while($ds_rep=mysql_fetch_object($sql_replays))
{
$gewinner1  =  $ds_rep->gewinner1;
$verlierer1  =  $ds_rep->verlierer1;
$rassev1  =  $ds_rep->verliererRasse1;
$rasseg1  =  $ds_rep->gewinnerRasse1;
$gewinner2  =  $ds_rep->gewinner2;
$verlierer2  =  $ds_rep->verlierer2;
$rassev2  =  $ds_rep->verliererRasse2;
$rasseg2  =  $ds_rep->gewinnerRasse2;
$gewinner3  =  $ds_rep->gewinner3;
$verlierer3  =  $ds_rep->verlierer3;
$rassev3  =  $ds_rep->verliererRasse3;
$rasseg3  =  $ds_rep->gewinnerRasse3;
$verlierer4  =  $ds_rep->verlierer4;
$rassev4  =  $ds_rep->verliererRasse4;
$mu  =  $ds_rep->MU;
$datum  =  $ds_rep->datum;
$daur  =  $ds_rep->daur;
$replaypfad  =  $ds_rep->replaypfad;
$map  =  $ds_rep->map;
$spielname  =  $ds_rep->spielname;


}
if ($gewiner2=="" && $verlierer2=="" && $verlierer3=="" && $verlierer4=="")
{
echo "<tr  onMouseOver=\"this.style.backgroundColor = '#ccc';this.style.color = 'black';\" onMouseOut=\"this.style.backgroundColor = '';this.style.color = 'white';\"><td class=\"1px-rahmen\"><img src=images/race/$rasseg1.gif>$gewinner1<br /><img src=images/race/$rasseg2.gif>$gewinner2</td> <td class=\"1px-rahmen\">Vs.</td> <td class=\"1px-rahmen\"> <img src=images/race/$rassev1.gif>$verlierer1<br /><img src=images/race/$rassev2.gif>$verlierer2</td> <td class=\"1px-rahmen\">$matchup</td> <td class=\"1px-rahmen\">$dauer Min.</td><td class=\"1px-rahmen\">$mapname</td><td class=\"1px-rahmen\"></td><td class=\"1px-rahmen\"><a href=\"download-2n2-replay.php?filepub=$replay\"><img src=\"http://www.tutorials.de/forum/images/disc.gif\" border=\"0\"></a></td>
";
}
elseif ($verlierer3=="" && $verlierer4=="")
{
if($punktew!="")
{
echo"<tr  onMouseOver=\"this.style.backgroundColor = '#ccc';this.style.color = 'black';\" onMouseOut=\"this.style.backgroundColor = '';this.style.color = 'white';\"><td class=\"1px-rahmen\"><img src=images/race/$rasseg1.gif>$gewinner1<br /><img src=images/race/$rasseg2.gif>$gewinner2</td> <td class=\"1px-rahmen\">Vs.</td> <td class=\"1px-rahmen\"> <img src=images/race/$rassev1.gif>$verlierer1<br /><img src=images/race/$rassev2.gif>$verlierer2</td> <td class=\"1px-rahmen\">$matchup</td> <td class=\"1px-rahmen\">$dauer Min.</td><td class=\"1px-rahmen\">$mapname</td><td class=\"1px-rahmen\"></td><td class=\"1px-rahmen\"><a href=\"download-2n2-replay.php?filepub=$replay\"><img src=\"http://www.tutorials.de/forum/images/disc.gif\" border=\"0\"></a></td>
";
}
else{
echo"<tr  onMouseOver=\"this.style.backgroundColor = '#ccc';this.style.color = 'black';\" onMouseOut=\"this.style.backgroundColor = '';this.style.color = 'white';\"><td class=\"1px-rahmen\"><img src=images/race/$rasseg1.gif>$gewinner1<br /><img src=images/race/$rasseg2.gif>$gewinner2</td> <td class=\"1px-rahmen\">Vs.</td> <td class=\"1px-rahmen\"> <img src=images/race/$rassev1.gif>$verlierer1<br /><img src=images/race/$rassev2.gif>$verlierer2</td> <td class=\"1px-rahmen\">$matchup</td> <td class=\"1px-rahmen\">$dauer Min.</td><td class=\"1px-rahmen\">$mapname</td><td class=\"1px-rahmen\"><a href=\"download-2n2-replay.php?filepub=$replay\"><img src=\"http://www.tutorials.de/forum/images/disc.gif\" border=\"0\"></a></td>
";
}
}
else{
echo " <tr  onMouseOver=\"this.style.backgroundColor = '#ccc';this.style.color = 'black';\" onMouseOut=\"this.style.backgroundColor = '';this.style.color = 'white';\"><td class=\"1px-rahmen\"><img src=images/race/$rasseg1.gif>$gewinner1<br /><img src=images/race/$rasseg2.gif>$gewinner2<br /><img src=images/race/$rasseg3.gif>$gewinner3</td> <td class=\"1px-rahmen\">Vs.</td> <td class=\"1px-rahmen\"> <img src=images/race/$rassev1.gif>$verlierer1<br /><img src=images/race/$rassev2.gif>$verlierer2<br /><img src=images/race/$rassev3.gif>$verlierer3<br /><img src=images/race/$rassev4.gif>$verlierer4</td> <td class=\"1px-rahmen\">$matchup</td> <td class=\"1px-rahmen\">$dauer Min.</td><td class=\"1px-rahmen\">$mapname</td><td></td><td></td><td class=\"1px-rahmen\"></td><td class=\"1px-rahmen\"><a href=\"download-2n2-replay.php?filepub=$replay\"><img src=\"http://www.tutorials.de/forum/images/disc.gif\" border=\"0\"></a></td>
";

}
geht aber auch net
mysql error sagt mir das
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM ladder_2n2_contens WHERE t2.username = ''(SELECT t3.`gewinner1`,t3.`verlie' at line 3
 
Zuletzt bearbeitet:
Hi EddieG,

schreibe mal deine Query in mehrere Zeilen unterteilt und ein bisschen auseinandergefächert. So habe ich auf anhieb 2 Syntaxfehler gefunden. Ausserdem weiß MySQL bei dir auch gar nicht, was t1, t2 und t3 sind. Hellsehen kann es auch (noch) nicht ;)

Und das mit den Feldern hast du anscheinend falsch verstanden ;) Du kannst natürlich auch weiterhin einen * für alle Felder verwenden.

Was Loomes meint ist, dass folgendes das gleiche ist:

SQL:
SELECT
  ewig_langer_tabellen_name_ohne_ende_blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.i,
  ewig_langer_tabellen_name_ohne_ende_blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.k
FROM
  ewig_langer_tabellen_name_ohne_ende_blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ist gleichbedeutend mit
SQL:
SELECT
  tabelle.i AS ID,
  tabelle.k AS Kosten
FROM
  ewig_langer_tabellen_name_ohne_ende_blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa AS tabelle

Man kann an Hand der Spaltennamen zum Beispiel nicht auf den Sinn dahinter schließen. Über das "AS" kannst du einen anderen, mnemonischen Namen vergeben.

Gruß
BK
 
Zuletzt bearbeitet:
Warum arbeitest Du nicht mit JOINS?
Sind die 3 Tabellen mit Zuordnungen bedacht oder wahllos erstellt worden?

Du könntest ja mal die Tabellenstruktur der 3 Tabellen hier Posten.
 
Zurück