PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL: Logisches Problem bei einem Query


mf_2
2008-01-03, 14:35:39
Hallo,

Ich habe ein Problem:

Es gibt eine Tabelle t1 mit den Feldern prozess, server und id.
Weiterhin gibt es eine Tabelle tserver mit den Feldern id, servername, prozessid und eine Tabelle tprozesse mit den Feldern id, prozessname,serverid.

Nun will ich alle Datensätze aus t1 anzeigen, wenn es für den Server im Feld 'server' auch wirklich den Prozess im Feld 'prozess' gibt.

Folgendes ist mein Query:

SELECT * FROM t1 WHERE prozess IN (SELECT prozessname FROM tprozesse WHERE serverid IN (SELECT id FROM tserver))

Hier prüft er also, ob der Prozess existiert, er prüft aber nicht, ob der Prozess auf genau dem Server existiert, der im Datensatz aus t1 steht. Der Query schaut nur, ob der Prozess auf irgendeinem Server existiert.
Wie behebe ich das?

Gruß,
mf_2

Gast
2008-01-05, 19:58:55
SELECT * FROM t1 WHERE prozess IN (SELECT prozessname FROM tprozesse WHERE serverid IN (SELECT id FROM tserver))

select t1.* from t1, prozess, tserver where t1.prozess=prozess.prozessname and prozess.serverid=tserver.id and t1.server=prozess.serverid

Oder so ähnlich. Der Zugriff auf tserver ist eigentlich unnötig, wenn ich das Problem richtig verstanden habe. Man könnte auch t1 direkt mit der serverid aus prozess verknödeln.