उपयोगकर्ता 123 की मित्र सूची:
SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.user_id = 123 AND status = 'accepted';
उपयोगकर्ता 123 इन उपयोगकर्ताओं के प्रशंसक हैं:
SELECT u.* FROM users u INNER JOIN friend_requests f ON f.user_id = u.id WHERE f.friend_id = 123 AND status = 'waiting';
स्थिति कॉलम पर अनुक्रमणिका जोड़ना न भूलें।
साथ ही, मुझे यकीन नहीं है कि इस तरह की तालिका इसके लिए आदर्श है।
संपादित करें:
मैं शायद इस तरह का एक स्कीमा चुनूंगा:
friend_request
request_from (foreign key to users.user_id)
request_to (foreign key to users.user_id)
resolved (boolean 1 or 0, default is 0)
friend_xref
friend (foreign key to users.user_id)
is_friend_with (foreign key to users_user_id)
fan_xref
user (foreign key to users.user_id)
is_fan_of (foreign key to users.user_id)
जब कोई मित्र अनुरोध करता है, तो मित्र_अनुरोध तालिका में नई पंक्ति जोड़ें। जब अनुरोध प्राप्तकर्ता चुनता है:
- अनुरोध स्वीकार करने के लिए:मित्र_xref में नई पंक्ति जोड़ें और मित्र_अनुरोध तालिका में 1 को हल करें सेट करें
- अनुरोध को अस्वीकार करने के लिए:fan_xref में नई पंक्ति जोड़ें और मित्र_अनुरोध तालिका में 1 पर हल करें सेट करें
लेकिन सबसे अच्छा जवाब पाने के लिए इसे mysql, डेटाबेस-डिज़ाइन या कुछ इसी तरह के टैग के तहत पूछना बेहतर होगा।