MySQL Select kreuz und quer ;-)
Dieter
- datenbank
Hi zusammen,
ich hab ein Emailpostfach auf DB Basis in dem mehrere User nach ID getrennt sich untereinander Nachrichten schreiben können ...
Nun möchte ich gerne alle Nachrichten die sich Peter(id1) und Sandra(id2) geschrieben haben in einem Dialog darstellen ;-)
SELECT *
FROM
s4all_mail,s4all_user
WHERE
s4all_mail.to_nickID='2' AND s4all_mail.from_nickID='1'
OR
s4all_mail.to_nickID='1' AND s4all_mail.from_nickID='2'
AND
s4all_user.id=s4all_mail.to_nickID
ORDER by
s4all_mail.id
DESC
Sieht nett aus oder ? ;-)
Hier steckt das Problem:
s4all_mail.to_nickID='2' AND s4all_mail.from_nickID='1'
OR
s4all_mail.to_nickID='1' AND s4all_mail.from_nickID='2'
Mache ich das so:
s4all_mail.to_nickID='2' AND s4all_mail.from_nickID='1'
oder auch umgekehrt dann funzt alles Prima, nützt aber nicht viel da ja dann nicht die Nachrichten von beiden Seiten da sind und kein Dialog endsteht ...
Wenn ich versuche beide zu kreuzen wie im ersten Beispiel liest er mir zwar den Dialog aus aber auch gleich eine unmenge an Nachrichten die nicht dazu gehören ....
Hab ich da vieleicht zu wenig Kenntniss von MySQL ? Oder hab ich einfach einen Denkfehler in meiner Abfrage ?
Ich danke euch für jeden Tipp ....
Viele Grüße
Dieter
Guten Morgen,
ich weiß nicht, ob's der Fehler ist, aber vielleicht hast du ein Problem mit der Bindungsstärke von AND/OR in deiner Logik - AND bindet stärker als OR, daher weiß ich im Moment nicht, ob deine Ausdruckskombination richtig anschlägt.
Wenn du also kein JOIN benutzt, dann versuch mal die WHERE-Klausel zu klammern:
(
(s4all_mail.to_nickID='2' AND s4all_mail.from_nickID='1')
OR
(s4all_mail.to_nickID='1' AND s4all_mail.from_nickID='2')
)
AND
s4all_user.id=s4all_mail.to_nickID
MfG
Rouven
Heya ;-) das funzt ... besten Dank ;-)
(
(s4all_mail.to_nickID='2' AND s4all_mail.from_nickID='1')
OR
(s4all_mail.to_nickID='1' AND s4all_mail.from_nickID='2')
)
AND
s4all_user.id=s4all_mail.to_nickID