[MySQL] Subselect auf zurückgelieferte Zeilen prüfen

Goltergaul

Well-known member
ID: 17553
L
26 April 2006
480
7
hi ich hab hier folgendes Query:

SELECT * FROM tw1_bases b
JOIN tw1_truppen t
ON b.x=t.x AND b.y=t.y
WHERE t.team != b.team
AND (SELECT id FROM tw1_truppen WHERE x=b.x AND y=b.y AND team=b.team)=0

Das gesamte Query soll nur Ergebnisse liefern, wenn das Subquery keine Ergebnisse liefert. So wie ich das gemacht habe schmeißt es zwar keinen Fehler aber ich bekomme auch keine Ergebnisse. Der Join stimmt, ohne das Subselect bekomme ich Ergebnisse. Kann mir da wer helfen? =)
 
dependent sub-querys kosten unmengen Rechenperformance, sollte dir das egal sein, kannst du es weiternutzen, ansonsten solltest du mal schauen den Query umzubauen

Edit: wenn ich das richtig sehe ist ein LeftJoin die Lösung?
 
hm ich weiß nicht kenn mi leider ned soo gut aus. Wo ist der unterschied zwischen JOIN und LEFT JOIN? Würde es gerne performanter machen, ja.. Gibts ja noch INNER und OUTER oder? die doofe mysql docs sind so technisch, da blick ich irgendwie ned so ganz durch :/
 
Wenn ich deine Query richtig interpretiere, dann hast Du eine Reihe von Basen, die sich an der Position (x/y) befinden und einem Team gehören.
Desweiteren hast Du Truppen, die sich ebenfalls an Position(x/y) befinden und zu einem Team gehören.
Du möchtest nun wissen, in welcher Basis sich "fremde" Truppen befinden, aber keine "eigenen".

Welche Information willst Du genau gewinnen ?
- um welche Koordinaten es sich handelt ?
- um welche Basis es sich handelt ?
- um welche Truppen es sich handeln ?