編集:これを複数のクエリを使用してPHPを使用して結合する方法があると思うので、これをPHPカテゴリとMySQLカテゴリの両方に入れました。私はむしろこれをしないだろう...しかし、終わりには、解決策は解決策です...MySQL別のテーブルのタイムスタンプに基づいて情報を選択する
これはうまくいけば誰かが考えることができますが、私は確かにここにこだわっています!私のサイトでは、ユーザーがフィード/メッセージを投稿できるようにしています。メンバーシップの切り替えは、できるだけ頻繁に行うことができます。現在のメンバーシップだけでなく、各フィードを投稿したメンバーシップに基づいていくつかの統計を実行したいと思います。たとえば、各メンバーシップによって投稿されたフィードの数を確認したいと思います。今、カウントを実行してユーザー、フィード、メンバーシップの表に参加できますが、これは各ユーザーの現在のメンバーシップに基づいて各フィードをカウントします。私はこれが理にかなってほしい。
私たちのDBには既に多くのフィードがあるので、投稿したユーザーがどのメンバーシップタイプであるかを示す列をフィードテーブルに追加できません。ここでは誰もがこれを行う方法のクエリのアイデアを持っているかどうかを確認するためにどのように見えるか、私のテーブル(省略)である:
ユーザー表
id username membershipid
1 John Doe 1
メンバーシップ表に
id membershipname
1 Membership #1
2 Membership #2
3 Membership #3
メンバーシップ履歴テーブルを
id membershipsid usersid unix_timestamp
1 1 1 1476635544.33
2 2 1 1476641890.11
3 3 1 1476642124.2
4 1 1 1476642161.51
フィードテーブル
id unix_timestamp usersid
1 1476641716.809361 1
2 1476641783.866863 1
3 1476641822.779324 1
4 1476641904.066237 1
5 1476641973.767174 1
6 1476642182.821472 1
unix_timestampsをすばやく確認することは困難である...しかし、私は希望することは、この提供するソリューションのためである:、これまでメンバーシップ表で
membershipid feedcount
1 4
2 2
3 0
を
送り回数を私は多くのことを試してみましたが、それらはすべてのような...ユーザーが持っている現在のメンバーシップを提供し終わる:
SELECT
a.MembershipName MembershipName,
COUNT(*) Feeds
FROM (SELECT
m.membership_name MembershipName
FROM feeds f
JOIN users u ON f.usersid = u.id
JOIN memberships m ON u.membership_id = m.id
GROUP BY f.id
ORDER BY f.unix_timestamp DESC) a
GROUP BY a.MembershipName
ORDER BY a.MembershipName
しかし、これはメンバーと何もしません船履歴テーブル、私の出力テーブルがあるので:
送り回数会員テーブルによって
membershipid feedcount
1 6
2 0
3 0
示されるように、それは1-> 4、2-> 2 & 3-> 0でなければならないように、間違っています上記の表の誰のアイデアですか?
似たような状況ます。http:/ /stackoverflow.com/questions/4070476/sql-query-to-join-two-tables-based-off-closest-timestamp#彼らの 'classification'テーブルはあなたのメンバーシップ履歴テーブルとなり、' closed_cases'テーブルはあなたのフィードテーブル – Terminus
それはかなり似た質問です...私はそれをまったく複製することができるかどうか見ていきます。私が実行している1つの問題は、彼のソリューションは「エンドタイム」の新しい列を追加することで解決したということです。メンバーシップの履歴テーブルでこのユーザーの次の値になります。 –