2017-02-28 22 views
0

を持つユーザー、私は3つのテーブル1を持っているがユーザーuser_packagesで、最後の1がパッケージです取得します。 ユーザーテーブルには、名前、電子メールなどとテーブルが外部キーのPackageIDと各パッケージの状態としてユーザーIDが含まれていuser_packagesのようないくつかの情報が含まれています。一度に起動できるパッケージは1つだけです。 パッケージテーブルにはすべてのパッケージが含まれています。今私は、私がシステムにログインすると、現在のセッションのIDが一致していないユーザーしか見ることができないような方法でレコードを取得したいと考えています。その情報を取得した後、結果はドナーテーブルに保存されます。このようにして、誰に支払うのかというユーザー間には関係があります。私は他の人の記録を取得する非常に細かい作業をしている次のクエリを持っています。 同じパッケージID

$this -> db -> query("Select * from user JOIN user_packages ON user.id!='$id' AND user.canRecieve!='1' AND user.active='1' AND user.id=user_packages.userID AND user_packages.status='1' ORDER BY RAND(), user.id LIMIT 1"); 

は今、私の主な関心事は、ユーザーのみでも条件を超えるなど、現在のユーザーのと同じpackgeIDを持っていた私には見えなければならないことは何か。最終的に得た多くのクエリを試した後、私もそうここUser Table

User Packages Table

+0

packgeID –

+0

のクエリで 'packages'テーブルを結合するクエリを設計できますか? –

答えて

1

5.

のもののPackageIDに属している人/ユーザーを選択したい、私は5のPackageIDを持っていると言うことは答えであります正しい出力を与えるクエリ

$this -> db -> query("Select user.id, user.name, user.canRecieve, 
user.active from (Select user.id, canRecieve, status, packageID, active from 
user JOIN user_packages ON user.id='$id' AND user.canRecieve!='1' AND 
user.active='1' AND user_packages.userID=user.id AND user_packages.status='1') 
AS DONOR JOIN user ON user.id!='$id' AND user.canRecieve!='1' AND 
user.active='1' JOIN user_packages ON user.id=user_packages.userID AND 
user_packages.status='1' AND user_packages.packageID=DONOR.packageID ORDER BY 
RAND(), DONOR.id LIMIT 1"); 
+0

あなたは自分自身の解決策を見つけることができます。良い –

+0

ありがとう@ Deep3015 –

関連する問題