簡體   English   中英

php mysql連接多個表

[英]php mysql join multiple table

我有兩張桌子

用戶

userID username     email
  1       abc    abc@abc.com
  2       def    def@def.com
  3       ghi    ghi@ghi.com

推薦

 refID userID      invEmail
   1      1      abc@def.com
   2      1      omg@mog.com
   3      1      def@def.com

所以我的計划是給一個invited user 5 point同時inviter 10 point ,所以基本上userID 1獲得30,同時userID 2獲得5.我可以用PHP做點,但我遇到困難的一部分是當一個invEmail被識別。 如果它可以工作,我不介意分成多個查詢。

我如何在sql中顯示這個?

我試過類似的東西

SELECT *, count(r.userID) FROM user u, referral r WHERE u.userID = r.userID OR u.email = r.invEmail GROUP BY r.userID

它返回了錯誤的價值。

我希望它返回什么 ,邀請者和被邀請者有多少計數(根據邀請者邀請注冊的匹配電子郵件)

我該怎么辦?

謝謝。

編輯:我忘記添加一些問題,如果我希望邀請者只有在被邀請者注冊時才能獲得10分? 我的意思是,只有當u.email中存在invEmail時,只有userID才能獲得10分。 對不起,我錯了。

你可以做這樣的事情:

select points.userId, points.username, points.email, sum(points.points)
FROM
(select u.*, count(*)*10 as points
  from user u
    join referral on u.userID = r.userID
    join user verify_user on r.invEmail = verify_user.email
  group by u.userID, u.username, u.email
UNION
select u.*, count(*)*5 as points
  from user u
    join referral on u.email = r.invEmail and u.userID != r.userID
  group by u.userID, u.username, u.email
) as points
group by points.userId, points.username, points.email

我認為你需要兩個單獨的選擇來獲得每種注冊類型的點數,並結合一個union語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM