संपादित करें: मैंने इसे PHP और MySQL श्रेणियों दोनों में रखा है क्योंकि मुझे लगता है कि एकाधिक प्रश्नों का उपयोग करके ऐसा करने का एक तरीका हो सकता है और PHP का उपयोग करके उन्हें एक साथ जोड़ना है। मैं यह नहीं करूँगा ... लेकिन दिन के अंत में, एक समाधान एक समाधान है ...MySQL किसी अन्य तालिका के टाइमस्टैम्प पर आधारित जानकारी चुनना
यह उम्मीद है कि किसी के बारे में सोचना आसान होगा, लेकिन मैं निश्चित रूप से यहां फंस गया हूं! मेरी साइट पर, मैं उपयोगकर्ताओं को फ़ीड/संदेश पोस्ट करने की अनुमति देता हूं, और उन्हें जितनी बार चाहें सदस्यता को स्विच करने की अनुमति है। मैं उन सदस्यता के आधार पर कुछ आंकड़े चलाने के लिए चाहता हूं, जब वे अपनी वर्तमान सदस्यता के बजाय प्रत्येक फ़ीड पोस्ट करते थे। उदाहरण के लिए, मैं देखना चाहता हूं कि प्रत्येक सदस्यता द्वारा कितनी फीड पोस्ट की गई थीं। अभी, मैं एक गिनती चला सकता हूं और उपयोगकर्ताओं, फीड्स और सदस्यता तालिका में शामिल हो सकता हूं, लेकिन यह प्रत्येक उपयोगकर्ता द्वारा उनकी वर्तमान सदस्यता के आधार पर प्रत्येक फ़ीड द्वारा गिना जाता है, जो कि जब वे पोस्ट करते हैं तो उनकी सदस्यता आवश्यक नहीं होती है। मुझे लगता है कि इसका मतलब बनता है।
चूंकि हमारे डीबी में पहले से ही कई फीड हैं, इसलिए मैं फ़ीड तालिका में कॉलम में जोड़ने में असमर्थ हूं, यह दर्शाता है कि किस सदस्यता प्रकार उपयोगकर्ता ने पोस्ट किया है। यहाँ क्या मेरी तालिकाओं (संक्षिप्त) अगर कोई ऐसा करने के तरीके के एक प्रश्न विचार है यह देखने के लिए की तरह लग रहा है:
उपयोगकर्ता तालिका
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# उनकी 'वर्गीकरण' तालिका आपकी सदस्यता इतिहास तालिका होगी और उनकी 'बंद_cases' तालिका आपकी फ़ीड्स तालिका – Terminus
होगी यह एक बिल्कुल समान सवाल है ... मैं यह देखने जा रहा हूं कि क्या मैं इसे दोहराना चाहूंगा। एक मुद्दा जो मैं चल रहा हूं वह यह है कि उसका समाधान केवल 'एंडटाइम' के साथ एक नया कॉलम जोड़कर हल किया गया था। मैं सदस्यता समाप्त करता हूं कि इस उपयोगकर्ता के लिए सदस्यता_history तालिका –