2017-02-28 118 views
0

用戶我有3代表一個是用戶秒是user_packages,最後一個是用戶表包含如姓名,電子郵件等,並user_packages表包含用戶ID作爲外鍵包標識和每個包的狀態的一些信息。一次只能激活一個包裝。 表包含所有包。現在我想以這樣一種方式獲取記錄,即如果我登錄系統,只能看到一個沒有匹配當前會話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爲包括上述條件的當前用戶。讓說我有5包標識我想選擇的人/用戶也屬於5

User Table

User Packages Table

+0

用packgeID加入查詢中的'packages'表 –

+0

您可以設計查詢嗎? –

回答

1

所以在這裏,包標識是答案嘗試了很多疑問終於得到了後提供正確輸出的查詢

$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 –