• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Abfragen des Gleichen Wertes aus mehren Tabellen

Acer90

Mitglied
Hallo Community,

ich habe momentan ein, und zwar möchte ich gerne eine abfrage über mehrer Mysql Tabellen machen, diese sind auch in der Gleichen datenbank.

Die Tabellen heißen fahrzeuge, Heli, jets und die spalten der Tabellen sind gleich.

Nun hatte ich mich ran-gesetzt und diesen Code hier geschrieben.

PHP:
<?php
$filename1 = $_POST["filename1"];
mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
mysql_select_db(MYSQL_DATENBANK)
    or die("Auswahl der Datenbank fehlgeschlagen");
$res1 = mysql_query("SELECT * 
					FROM  
  					  fahrzeuge AS t1,  
  					  Heli AS t2,  
 				 	  jets AS t3,  
					WHERE  
  					  t1.sGameName = t2.'$filename1'
  				  	OR  
  					  t2.sGameName = t3.'$filename1'
   				 	OR  
  					  t3.sGameName = t4.'$filename1' ");

?>

 <p>*<img width="300" border="2" align="center" alt="<?php echo "$filename1"; ?>" style="null" src="http://soldnerhq.de/bilder/fahrzeuge/Vergleich/<?php echo "$filename1"; ?>.jpg" /><br />

<?php while ($row = mysql_fetch_assoc($res1)):?>

Leider wird nun keine Ausgabe mehr gemacht.

Siehe diesen link.

Über eine hilfe bin ich sehr dankbar.

mfg: Acer
 
Werbung:
Wenn Du sowas in PHP schreibst, dann wäre das wohl der bessere Weg:

Code:
$res1 = mysql_query("SELECT * 
                    FROM  
                        fahrzeuge AS t1,  
                        Heli AS t2,  
                        jets AS t3,  
                    WHERE  
                        t1.sGameName = t2.'".mysql_escape_string($filename1)."'
                        OR  
                        t2.sGameName = t3.'".mysql_escape_string($filename1)."'
                        OR  
                        t3.sGameName = t4.'".mysql_escape_string($filename1)."' ");

Allerdings sieht mir das von der Datenbankstruktur her nicht ganz durchdacht aus. Was könnte denn in $filename1 alles übergeben werden? So wie es hier ist erhälst Du mehr MySQL-Fehler als dir lieb ist. Und das dabei nichts raus kommt, selbst wenn $filename1 etwas passendes enthält, wundert mich auch kaum. Was für Spalten gibt es denn? Was ist dein eigentliches Ziel (inhaltlich gesehen)?
 
Also er soll wenn er werte in einer Datenbank gefunden hat, die Daten vom Jeweiligen Fahrzeug / Heli / Jets in eine Tabelle ausgeben, dieses funktioniert auch, ich habe aber nun das Problem das halt die Daten in 3 verschieden Tabellen stehen.

und in Filename wird folgender Wert übergeben: z.b. M977 HEMMT oder ATV diese stehen auch so in der Mysql Tabelle unter der spalte sGameName.
 
Werbung:
Wenn ich das richtig verstehe steht z.B. in jeder Tabelle eine Spalte mit einem Wert wie M977, HEMMT oder ATV. Deine Tabellen sehen dann vermutlich so aus:

sGameName | M977 | HEMMT | ATV

Vermutlich - weil Du ja nicht genau sagst wie deine Tabellen aussehen. Sollten Sie so aussehen, dann hast Du einen groben Denkfehler bei dem was Du eigentlich erreichen willst. Wenn man dein Datenmodell normalisiert würdest Du auf eine viel einfachere Struktur mit einer Tabelle kommen in der dann z.B. so eine Abfrage funktioniert:

Code:
SELECT * FROM tabelle WHERE sGameName = 'HEMMT'

D.h. in der Spalte sGameName steht genau dieser Wert drinne. In deinem Versuch vergleichst Du aber 2 völlig unterschiedliche Tabellenspaltennamen miteinander, was etwas völlig anderes und in meinen Augen falsches ist.
 
Ich habe dir mal 2 Bilder aus Phpmyadmin gemacht ich hoffe die helfen dir weiter.

mysql1.JPG

mysql2.JPG


Und mit diesen Code habe ich es Vohrer gemacht:

PHP:
$res = mysql_query("SELECT * FROM fahrzeuge as f WHERE f.sGameName = '$filename2'");


Leider kann ich damit aber nur eine Tabbelle Abfragen, nun wollte ich aber die Abfrag auf allen 3 Tabellen.


Also Habe grade mal den Code nochmal umgeschrieben:

PHP:
$res = mysql_query("SELECT * FROM fahrzeuge as f, Heli as H WHERE f.sGameName = '$filename2' OR H.sGameName = '$filename2'");

Nun Zeigt er mir aber alles Aus der Tabelle Heli an, siehe diesen link: http://soldnerhq.de/Vfahrzeuge.php
 
Zuletzt bearbeitet:
Jetzt versteh ich dein Problem eher. Du weißt nicht in welcher Tabelle der Suchbegriff steht, daher suchst Du mit einem Statement in allen Tabellen.

Das kannst Du aber nicht machen. Wenn Du mehrere Tabellen in einem Statement verwendest musst Du diese irgendwie miteinander verknüpfen. Das tust Du aber nicht, weil es bei deinen Tabellen auch keinen Sinn macht.

Du musst aus dem einen Statement folglich 3 einzelne machen - für jede Tabelle eins.
 
Werbung:
Also so oder wie?

PHP:
$res1 = mysql_query("SELECT * FROM `fahrzeuge` WHERE `sGameName` = '$filename1'");
$res2 = mysql_query("SELECT * FROM `Heli` WHERE `sGameName` = '$filename1'");
$res3 = mysql_query("SELECT * FROM `jets` WHERE `sGameName` = '$filename1'");

wie bekomme ich dann raus wo etwas ist
 
PHP:
mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
mysql_select_db(MYSQL_DATENBANK)
    or die("Auswahl der Datenbank fehlgeschlagen");
$res1 = mysql_query("SELECT * FROM `fahrzeuge` WHERE `sGameName` = '$filename1'");
$res2 = mysql_query("SELECT * FROM `Heli` WHERE `sGameName` = '$filename1'");
$res3 = mysql_query("SELECT * FROM `jets` WHERE `sGameName` = '$filename1'");

while ($row1 = mysql_fetch_assoc($res1)):
$end1 = echo "htmlspecialchars($row1['sGameName'])";
endwhile;

while ($row2 = mysql_fetch_assoc($res2)):
$end2 = echo "htmlspecialchars($row2['sGameName'])";
endwhile;

while ($row3 = mysql_fetch_assoc($res3)):
$end3 = echo "htmlspecialchars($row3['sGameName'])";
endwhile;

	if ( '$end1' == '$filename1')
		{
   		 while ($row = mysql_fetch_assoc($res1));
		}
  	elseif( '$end2' == '$filename1')
		{
		 while ($row = mysql_fetch_assoc($res2));
		}
	elseif( '$end3' == '$filename1')
		{
		 while ($row = mysql_fetch_assoc($res3));
		}
	else
		{
		 echo "Obejeckt nicht gefunden";
		}

So?

oder gibts da ne leichter möglichkeit bin nicht so ganz php komfirm.
 
Werbung:
Danke erstmal das hat mir schonmal viel weitergeholfen.

PHP:
mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
mysql_select_db(MYSQL_DATENBANK)
    or die("Auswahl der Datenbank fehlgeschlagen");
$res1 = mysql_query("SELECT * FROM `fahrzeuge` WHERE `sGameName` = '$filename1'");
$res2 = mysql_query("SELECT * FROM `Heli` WHERE `sGameName` = '$filename1'");
$res3 = mysql_query("SELECT * FROM `jets` WHERE `sGameName` = '$filename1'");

$num_rows1 = mysql_num_rows($res1); 
$num_rows2 = mysql_num_rows($res2);  

echo "$num_rows1\n";
echo "$num_rows2\n";

	if ( '$num_rows1\n' == 1)
		{
   		 §row = mysql_fetch_assoc($res1));
		}
  	elseif( '$num_rows2\n' == 1)
		{
		 §row = mysql_fetch_assoc($res2));
		}
	else
		{
		 §row = mysql_fetch_assoc($res3));
		}
 while ($row);

Nun bekomme ich folgenden fehler: Parse error: syntax error, unexpected '=' in /var/www/web23/html/sswevent/Vfahrzeuge.php on line 357
 
Also Errow habe ich mittlerweile entfernt, nun kommt aber leider keine ausgabe, gibt es irgentwie die die möglichkeit das er dann bei der while schleife den richtigen Parameter auswählt.
PHP:
mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
mysql_select_db(MYSQL_DATENBANK)
    or die("Auswahl der Datenbank fehlgeschlagen");
$res1 = mysql_query("SELECT * FROM `fahrzeuge` WHERE `sGameName` = '$filename1'");
$res2 = mysql_query("SELECT * FROM `Heli` WHERE `sGameName` = '$filename1'");
$res3 = mysql_query("SELECT * FROM `jets` WHERE `sGameName` = '$filename1'");

$num_rows1 = mysql_num_rows($res1); 
$num_rows2 = mysql_num_rows($res2);  

	if ( $num_rows1 == 1)
		{
   		 while ($row = mysql_fetch_assoc($res1));
		}
  	elseif( $num_rows2 == 1)
		{
		 while ($row = mysql_fetch_assoc($res2));
		}
	else 
		{
		 while ($row = mysql_fetch_assoc($res3));
		}

Über eine schnelle antwort wäre ich sehr erfreut.
 
Werbung:
Zurück
Oben