सभी पोस्ट किसी दिए गए उपयोगकर्ता (आईडी =145) और पोस्ट का अनुसरण करने वाले सभी उपयोगकर्ताओं को प्राप्त करने के लिए, प्रत्येक पोस्ट के लिए उपयोगकर्ता विवरण के साथ, मैं union
का उपयोग करने के लिए क्वेरी को फिर से लिखूंगा या के बजाय, इस प्रकार तर्क को सरल बनाना। पहले चयन को दिए गए उपयोगकर्ता के पद मिलते हैं, दूसरे को उन उपयोगकर्ताओं के पद मिलते हैं जिनका वह अनुसरण कर रहा है:
(SELECT P.id as postid,
P.caption,
P.date,
U.id as userid,
U.fullname,
U.username,
FROM USERS AS U
INNER JOIN Posts AS P ON P.userid = U.id
WHERE U.id = 145)
UNION
(SELECT P.id,
P.caption,
P.date,
U.id,
U.fullname,
U.username,
FROM Activity AS A
INNER JOIN USERS AS U ON A.IdOtherUser=U.id
INNER JOIN Posts AS P ON P.userid = U.id
WHERE A.id = 145)
ORDER BY postid DESC
धारणाएं:
-
गतिविधि.आईडी फ़ील्ड उस उपयोगकर्ता का प्रतिनिधित्व करती है, जो दूसरे उपयोगकर्ता का अनुसरण करता है। यदि नहीं, तो आपको फ़ील्ड नाम को उपयुक्त नाम में बदलना होगा।
-
पोस्ट पोस्ट करने वाले उपयोगकर्ता का प्रतिनिधित्व करने वाली पोस्ट तालिका के उपयोगकर्ता आईडी फ़ील्ड का आविष्कार किया। कृपया इसके स्थान पर सही फ़ील्ड नाम का उपयोग करें।