mysql-Select fehlerhaft
Sascha
- datenbank
0 Xava0 ziegenmelker
Moin moin!
Ich werde langsam verrückt, ich bekomme folgende Fehlerangabe
<schnipp>
You have an error in your SQL syntax near '( ( hostdb_host
INNER JOIN hostdb_interface ON hostdb_host.hostID = hostdb_inte' at line 3
</schnipp>
Was der fehler bedeutet ist schon klar, ab ich weiß nciht was verkehrt sein soll... ich habe spaßeshalbe meinen Select in MS-Access abgeschickt und siehe da..es funzt.
könnt ihr mir weiter helfen?
Ach ja der qry:
<schnapp>
SELECT hostdb_host.hostname, hostdb_osversion.osversion, hostdb_ipaddress.ipaddress
FROM hostdb_osversion
INNER JOIN (
(
hostdb_host
INNER JOIN hostdb_interface ON hostdb_host.hostID = hostdb_interface.hostID
)
INNER JOIN hostdb_ipaddress ON hostdb_interface.interfaceID = hostdb_ipaddress.interfaceID
) ON hostdb_osversion.osversionID = hostdb_host.osversionID
WHERE (
(
(
hostdb_ipaddress.ipaddress
) = - 1962070763
)
)
LIMIT 0 , 30
</schnapp>
Hallo Sascha!
Ich werde langsam verrückt, ich bekomme folgende Fehlerangabe
[MySQL-Fehlermeldung]
[MySQL-Query]
Warum die ganzen Klammern?
So sollte es aussehen (wie immer: Ohne Gewähr!):
---8<---------------------------------------------------------------------------
SELECT hostdb_host.hostname,
hostdb_osversion.osversion,
hostdb_ipaddress.ipaddress
FROM hostdb_osversion
INNER JOIN hostdb_host ON hostdb_osversion.osversionID = hostdb_host.osversionID
INNER JOIN hostdb_interface ON hostdb_host.hostID = hostdb_interface.hostID
INNER JOIN hostdb_ipaddress ON hostdb_interface.interfaceID = hostdb_ipaddress.interfaceID
WHERE hostdb_ipaddress.ipaddress = -1962070763
LIMIT 0, 30;
---8<---------------------------------------------------------------------------
Mehr Informatinonen zu Joins:
- MySQL Manual: 7.4.1.1 JOIN-Syntax
http://dev.mysql.com/doc/mysql/de/JOIN.html
Hi Xava
Warum die ganzen Klammern?
Die Klammern legen bei anderen DBMS die Ausführungsreihenfolge der Joins fest. Sie können die Performance ein ganzes Stück steigern.
Gruss Daniela
Moin moin!
Moin moin,
SELECT hostdb_host.hostname, hostdb_osversion.osversion, hostdb_ipaddress.ipaddress
FROM hostdb_osversion
INNER JOIN (
ich habe nichts darüber gefunden, daß MySQL verschachtelte joins unterstützt.
(
hostdb_host
INNER JOIN hostdb_interface ON hostdb_host.hostID = hostdb_interface.hostID
)
INNER JOIN hostdb_ipaddress ON hostdb_interface.interfaceID = hostdb_ipaddress.interfaceID
) ON hostdb_osversion.osversionID = hostdb_host.osversionID
WHERE (
Wofür sollen diese ganzen Klammern gut sein?
(
(
hostdb_ipaddress.ipaddress
) = - 1962070763
)
)
LIMIT 0 , 30
Sollte Dein Query nicht so viel einfacher funktionieren?
SELECT host.hostname, os.osversion, ip.ipaddress
FROM hostdb_host AS host, hostdb_osversion AS os, hostdb_ipaddress AS ip, hostdb_interface AS intf
WHERE host.hostID = intf.hostID
AND intf.interfaceID = ip.interfaceID
AND os.osversionID = host.osversionID
AND ip.ipaddress = - 1962070763
LIMIT 0 , 30
hth, ziegenmelker