MySQL Query Auswahl der Datensätze aus einer Datenbank, wo ein Wert gleich einem von zwei verschiedenen Dingen
Habe ich, um Datensätze aus meiner MySQL-DB wo:
sentto = "$username"
ODER
sentto = "everyone"
Wie würde ich diese in einer MySQL-Abfrage? Ich habe versucht ein paar Dinge, aber Sie scheinen nicht zu funktionieren:
mysql_query("SELECT *
FROM pmessages
WHERE status='unread'
AND sentto='$username' || sentto='everyone'");
mysql_query("SELECT *
FROM pmessages
WHERE status='unread'
AND sentto='$username'
AND sentto='everyone'");
Ich zu sein scheinen ratlos, wenn jemand weiß, wie zu tun es der richtige Weg, lassen Sie es mich bitte wissen. Dies ist ein neues Szenario für mich. Danke!
InformationsquelleAutor Chris Bier | 2009-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten Chris, basierend auf Ihre neue Abfrage:
Müssen Sie es so zu modifizieren, dass Ihr UND allein steht (es ist in Konflikt mit Ihrem ODER).
Umzuschreiben, um diese
Danke, Gut zu wissen.
Chris, kann es Ihnen gut tun, finden Sie einige Informationen über SQL und der Logik, die hinter der Auswertung von booleschen Operatoren wie UND, NICHT und ODER. Sie werden feststellen, dass, wenn Sie nicht gruppieren Sie Sie richtig zusammen, wird es bewerten falsch, und Sie werden nicht die Ergebnisse, die Sie suchen.
InformationsquelleAutor TheTXI
Unter detail aus einem Ihrer Kommentare berücksichtigt - mit dem "
OR
" - Schlüsselwort und die Klammern um sicherzustellen, dass die richtigen Bedingungen kombiniert werden.Dein problem war nie mit der
OR
, obwohl, es war tatsächlich dieAND
Vorrang und das fehlen von Klammern. Sehr wichtiges detail, dass Sie komplett weggelassen, aus deiner Frage war die zusätzliche Prüfung für "status = unread
".Beachten Sie die Verwendung von
?
oben - Sie sollten wirklich, wirklich Verwendung von vorbereiteten Anweisungen, wenn die Kombination von MySQL und PHP, d.h.:(oder die
mysqli
äquivalent)InformationsquelleAutor Alnitak
Da es die gleiche Spalte, die Sie gerade testen, würde ich die
IN
Stichwort:InformationsquelleAutor Dori
Dem Wort ODER ist das, was du suchst:
mysql_query("SELECT * FROM pmessages WO sentto='$username' ODER sentto='jeder',");
schließen Sie die zwei 'sentto' tests in Klammern. momentan wird Sie behandelt "(status = 'ungelesen' UND sentto = ...') ODER sentto = 'jeder'"
Das klappte! Postet bitte eine Antwort
Ich Tat, aber Sie akzeptiert die anderen... 🙁
InformationsquelleAutor Macros
ist jeder ein tatsächlicher Wert oder willst du alle Ergebnisse zurückgegeben werden?
wenn Sie wollen, um alle Ergebnisse so etwas ähnliches einrichten
InformationsquelleAutor DForck42