2017-05-10 7 views
0

で声明私はPHPとMySQLでのメッセージングシステムを開発しようとしている、と私は次のクエリを使用して2人の間のすべてのメッセージを取得したい:グループ2とSQL

$message = mysql_query("SELECT *FROM messages WHERE (sentby=$id AND sentto=$id2)AND (sentby=$id2 AND sentto=$id) ORDER BY time DESC"); 

このSQL文動かない。私はそれが正しい構文ではない(sentby = $ id2とsentto = $ id)と(sentby = $ idとsentto = $ id2)の間のANDステートメントのためだと思う。誰かがこのクエリを書く適切な方法を示すことができますか?

ありがとう、ORに変更して私の問題を解決しました。もともと私はそれをORとして持っていますが、このクエリの後にはユーザIDに関連付けられたユーザ名を検索する別のクエリがあり、ORを使用すると両方のユーザのユーザ名が与えられることがわかりました。混乱して疲れて、私は問題を解決しようとANDに変更しました。今私は両方の問題を解決しました。

+2

あなたは 'OR'代わりに' AND' here- '(sentby = $ Idの希望に持っていますAND sentto = $ id2)OR(sentby = $ id2とsentto = $ id) ' – GurV

+1

また、使用しているデータベースにのみタグを付けます。どちらですか? MySQLまたはSQL Server? – GurV

答えて

1
WHERE (sentby=$id OR sentby=$id2) AND (sentto=$id2 OR sentto=$id) 

これは、すべてのsentby =いずれかのIDを選択すると言う、ともsentto =いずれかのID

$message = mysql_query("SELECT *FROM messages WHERE (sentby=$id OR sentby=$id2) AND (sentto=$id2 OR sentto=$id) ORDER BY time DESC");