[SQL] Unknown column im Join Befehl

M3Y3R

Well-known member
ID: 336361
L
8 Mai 2006
1.608
60
Hallo

ich habe folgende SQL-Abfrage:
SELECT
nagios_hosts.display_name AS "Display Name",
nagios_hosts.alias AS "Alias",
nagios_hosts.address AS "Adresse",
obj1.name1 AS "Contacts",
obj2.name1 AS "Check Commands"

FROM nagios_hosts, nagios_host_contacts

INNER JOIN nagios_objects AS obj1 ON (nagios_host_contacts.contact_object_id = obj1.object_id)
INNER JOIN nagios_objects AS obj2 ON (nagios_hosts.check_command_object_id = obj2.object_id);

Wenn ich diese Abfrage nun im PhpMyAdmin ausführe erhalte ich folgende Fehlermeldung:
#1054 - Unknown column 'nagios_hosts.check_command_object_id' in 'on clause'

Das er die Spalte nagios_hosts.check_command_object_id nicht finden kann, weiß ich selber. Meine Frage ist nun aber, warum nicht?

Ich habe noch eine zweite Frage:
Spielt die Anordnung der Joins eine Rolle bei den Ergebnissen?


MfG
Papenburger
 
Zur ersten Frage: Das beantwortet die Fehlermeldung doch direkt mit - es gibt diese Spalte nicht.

Zur zweiten Frage: Konkret fällt mir gerade kein Beispiel ein, wo die Reihenfolge der gesamten Joins mit zugehöriger ONs eine Rolle spielen würde - ich bin allerdings auch nicht so der DB-Crack ;)
 
Zur ersten Frage: Das beantwortet die Fehlermeldung doch direkt mit - es gibt diese Spalte nicht.

Ich habe direkten zugriff (Admin) auf das PhpMyAdmin und kann somit auch die Tabellen bzw. Spalten einsehen und es gibt diese Spalte wohl. Da ich den Tabellenname und den Spaltenname kopiert habe und durch einen Punkt (.) verbunden habe darf er mir normalerweise nicht anzeigen, dass es die Spalte nicht gibt!

Zur zweiten Frage: Konkret fällt mir gerade kein Beispiel ein, wo die Reihenfolge der gesamten Joins mit zugehöriger ONs eine Rolle spielen würde - ich bin allerdings auch nicht so der DB-Crack ;)

Naja, trotzdem Danke!
 
Ich habe direkten zugriff (Admin) auf das PhpMyAdmin und kann somit auch die Tabellen bzw. Spalten einsehen und es gibt diese Spalte wohl. Da ich den Tabellenname und den Spaltenname kopiert habe und durch einen Punkt (.) verbunden habe darf er mir normalerweise nicht anzeigen, dass es die Spalte nicht gibt!

Bist du dir da sicher? Weil die Fehlermeldung besagt eindeutig das gegenteil.

PS: du hast da ein Cross Join eingebaut... "nagios_hosts, nagios_host_contacts" mach da mal leiber ein INNER JOINx mit bedigung draus.
 
Bist du dir da sicher? Weil die Fehlermeldung besagt eindeutig das gegenteil.

PS: du hast da ein Cross Join eingebaut... "nagios_hosts, nagios_host_contacts" mach da mal leiber ein INNER JOINx mit bedigung draus.

Ja ich bin mir 100%ig sicher.
(Siehe blaue text am oberen Rand & grüne Zeile )


Wieso Cross Join? Ich lese einmal ein paar Spalten aus der Datenbank nagios_hosts und einmal aus der nagios_host_contacts aus...
 
Zuletzt bearbeitet:
Gibt es denn eine Datenbank, die nagios_hosts heißt - also genau so, wie die Tabelle nagios_hosts?
Das wäre die einzige Fehlerquelle die mir noch einfiele - obwohl er dann afaik eigentlich "Unknown table" sagen sollte.
 
Das kann man auf dem Screen doch sehen. Schau mal ganz oben am Rand steht:

Datenbank "nagios" Tabelle: "nagios_hosts"...


MFG
Papenburger
 
Nein, kann man nicht. Ich sehe, dass es die Datenbank "nagios" mit Tabelle "nagios_hosts" gibt. Aber ich sehe nicht, ob es noch eine eigenständige Datenbank "nagios_hosts" gibt ;)
 
Nein diese Datenbank ist nicht vorhanden. Es existiert nur eine Datenbank mit dem Namen "nagios"
 
Du joinst vermutlich falsch. Du kreierst ein kartesisches Produkt (oder auch Natural Join) aus nagios_hosts und Deinem Join. Im Join willst Du auf die naigos_hosts-Tabelle zugreifen, die aber gar nicht in dem Join inbegriffen ist.

Da musst Du wohl das Ganze so umbauen, dass die beiden äußersten Tabellen auch vernünftig gejoint werden.