我會單獨解釋與問題相關的內容,並省略其他不相關的細節。我可以放一個條件來過濾我的COUNT子句嗎? mysql
現狀:
我有兩個表,硬幣和用戶。
coin
有三個字段id, uid, fid.
用戶之間 硬幣表涉及(誰已經在系統中登記,並能邀請朋友)和他們的朋友(誰已經接受了邀請,也成爲會員。):表示該表只有在被邀請成功註冊後才能成功註冊 -
id
是唯一索引。
uid
是存儲用戶ID。
fid
用於存儲朋友id(接受邀請併成爲系統成員的朋友)。
users
有關於用戶如id, fname, lname, email
...等,並date_create
通常信息目的: 要找到贏家誰取得了大多數的邀請。換一種說法。 要找到邀請人數最多的頂級用戶及其受邀朋友,必須在2012-08-31之前註冊。日期存儲在表'用戶'列date_create中。日期格式爲YYYY-MM-DD
例 -
Table coin
id uid fid
1 333 777
2 444 888
3 555 999
4 333 123
5 444 456
6 333 789
Table users
id date_create
333 2012-07-15
444 2012-07-20
555 2012-07-25
777 2012-07-25
888 2012-07-25
999 2012-10-02 <-- I don't need this to be counted
123 2012-07-25
456 2012-07-25
789 2012-07-25
意味着用戶333具有最多數目的邀請(邀請3個用戶) - > 777123和789 和用戶444邀請2組的用戶和用戶555只邀請1個用戶,但555不會因爲他的後2012-08-31
註冊的朋友(999)進行計數我要的是用戶
333 has made 3 invitations before 2012-08-31.
444 has made 2 invitations before 2012-08-31.
我做了這麼多遠:[TOTALLY不知道這]
SELECT
c.uid,
u.fname,
u.lname,
u.phone,
u.email,
u.country,
COUNT(c.fid) AS NoOfFriends
FROM coin AS c
JOIN users AS u
ON c.uid = u.id
GROUP BY c.uid
ORDER BY NoOfFriends desc
該查詢帶來了(據我所知)與最邀請用戶無論何時他/她的朋友已經註冊的。
所以我的問題是: Q1)如何將日期條件應用到我的查詢中?
我想擁有最多的朋友邀請的用戶。他/她邀請的朋友必須在2012-08-31之前接受邀請並註冊。在該日期之後的任何其他接受的邀請不應計入在內。
請爲我提供代碼示例。
你的問題不是很清楚。如果你只問一個問題,而不是同時提出兩個問題,那將更加清晰。如果你有兩個問題,那麼選擇一個,然後首先問一個問題。如果你仍然需要更多的幫助,你以後可以隨時創建另一個問題。讓每個問題都清晰,準確和獨立,避免一次混合多件事,否則你只會迷惑自己和其他人。 –
刪除了第一個問題。謝謝你的評論。 – MJoraid
「用戶必須在2012年10月31日之前註冊」哪個表格包含註冊日期以及該列的名稱是什麼?表'用戶'列date_create中的 –