Inner Join

Steusi

Nasenbär
ERROR 1064 (Tabellen verknüpfen)

Ich hatte ein großes Problem bei meiner MySQl-DB, musst Index und Fremdschlüssel etc. raus nehmen.
Aber ich muss trotzdem die Tabellen für Abfragen miteinander verknüpfen.

1. Tab:

Seriennummer | IP | Name | Gebrauch | idTrommeln

2. Tab

idTrommeln | Bezeichnung

Wie mach ich das? Hatte folgendes versucht, aber klappt nicht :D
PHP:
$query_str = "SELECT Seriennummer, IP, Name, Gebrauch, Bezeichnung AS Trommel FROM grunddaten INNER JOIN trommeln ON grunddaten.idTrommeln = trommeln.idTrommeln";


$query = mysql_query($query_str);

var_dump($query);
var_dump($query_str);
while($data = mysql_fetch_object($query)){
    echo $data->Seriennummer . " <br> ";
        echo $data->IP . " <br> ";
        echo $data->Name . " <br>";
		echo $data->Gebrauch . " <br>";
		echo $data->Trommel . " <br>";

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource

var_dump($query_str); = bool(false)

Die Abfrage kann nicht ausgeführt werden, nur warum weiß ich nicht. Danke schon mal für eure Tipps
 
Zuletzt bearbeitet:
Habe InnerJoin gelassen wurde mir zu komplex, habe es folgendermaßen gelöst:
PHP:
$query_str = "SELECT grunddaten.Seriennummer, grunddaten.IP_Adresse, grunddaten.Name, grunddaten.InGebrauch, ".
			 		"trommeln.Bezeichnung AS Trommel, ".
			 		"toner.Bezeichnung AS Toner, ".
					"zubehor.Bezeichnung AS Zubehor, ".
			 		"typ.Bezeichnung AS Printtyp, ".
			 		"modell.Bezeichnung AS Modell, ".
					"abteilung.Beschreibung AS Abteilung, ".
					"standort.Bezeichnung AS Standort ".
			 "FROM grunddaten, ".
			 		"trommeln, ".
					"toner, ".
					"zubehor, ".
					"typ, ".
					"modell, ".
					"abteilung, ".
					"standort ".
			 "WHERE (grunddaten.idTrommeln = trommeln.idTrommeln) ".
			 		"and (grunddaten.idToner = toner.idToner) ".
					"and (grunddaten.idZubehor = Zubehor.idZubehor ".
					"and (grunddaten.idTyp = typ.idTyp) ".
					"and (grunddaten.idModell = modell.idModell) ".
					"and (grunddaten.idAbteilung = abteilung.idAbteilung) ".
					"and (grunddaten.idStandort = standort.idStandort)";

$query = mysql_query($query_str);
if (mysql_errno()) { 
  $error = "MySQL error ".mysql_errno().": ".mysql_error()."<br>";
  echo($error);
}

So richtig weiter hilft mir die Fehlermeldung nicht:
MySQL error 1064: 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 '' at line 1
 
Zuletzt bearbeitet:
Ein Problem habe ich aber doch noch, 2 Zeilen werden einfach ignoriert:

PHP:
"and (grunddaten.idAbteilung = abteilung.idAbteilung) ".
					"and (grunddaten.idStandort = standort.idStandort) ".
Ich kann mir nur leider nicht erklären warum, die Schreibweise ist korrekt, in der Datenbank sehen wirklich die gleichen Werte drin, auch die Spaltenformatierung (int(11)) ist korrekt.
Alles stimmt, es ist kein Unterschied zu meinen anderen WHERE - Bedingungen zu erkennen. Fehlermeldungen kann ich nicht erwarten, da er mir einfach alle Möglichkeiten ausgibt, da er die Vergleiche bei Abteilung und Standort ignoriert.

Kennt vielleicht jemand den Fall oder hat eine Idee was ich prüfen könnte ich bin mit meinem Latein am Ende...


Nach über einer Stunde Fehlersuche (gefühlt noch viel mehr) sehe ich meinen Fehler immer noch nicht mit folgendem Code klappt es aber:

PHP:
$query_str = "SELECT grunddaten.Seriennummer, grunddaten.IP_Adresse, grunddaten.Name, grunddaten.InGebrauch, ".
			 		"trommeln.Bezeichnung AS Trommel, ".
			 		"toner.Bezeichnung AS Toner, ".
					"zubehor.Bezeichnung AS Zubehor, ".
			 		"typ.Bezeichnung AS Printtyp, ".
			 		"modell.Bezeichnung AS Modell, ".
					"abteilung.Beschreibung AS Abteilung, ".
					"standort.Bezeichnung AS Standort ".
			 "FROM grunddaten, ".
			 		"trommeln, ".
					"toner, ".
					"zubehor, ".
					"typ, ".
					"modell, ".
					"abteilung, ".
					"standort ".
			 "WHERE (grunddaten.idTrommeln = trommeln.idTrommeln) ".
			 		"and (grunddaten.idToner = toner.idToner) ".
					"and (grunddaten.idZubehor = Zubehor.idZubehor) ".
					"and (grunddaten.idTyp = typ.idTyp) ".
					"and (grunddaten.idModell = modell.idModell) ".
					"and (grunddaten.idAbteilung = abteilung.idAbteilung) ".
					"and (grunddaten.idStandort = standort.idStandort) ";
Ich habe Teilbereiche neu geschrieben, aber einen Unterschied seh ich nicht.....
Wiedermal so ein Fall, plötzlich geht es und keiner weiß warum... :offtopic:
 
Zuletzt bearbeitet:
Zurück