मैं केवल के लिए के लिए नाम से उन खोज और परिणामों को वापस प्राप्त करने में सक्षम होना चाहता हूँ को बाहर:दो तालिकाओं में शामिल हों लेकिन पंक्तियों को एक तिहाई तालिका में हालत से मेल
- जो लोग मेरे साथ
- उन मित्रों हूँ जो पहले से ही मेरे 'घटना' के साथ गठबंधन नहीं कर रहे हैं।
SELECT u.id, first_name, last_name FROM user u JOIN friend f ON ( (f.requester_id = u.id AND f.recipient_id = :my_user_id) OR (f.recipient_id = u.id AND f.requester_id = :my_user_id) AND confirmed = 1 ) AND ( (first_name LIKE :search_input OR last_name LIKE :search_input) OR (CONCAT (first_name, ' ', last_name) LIKE :search_input) ) AND NOT u.id = :my_user_id ORDER BY last_name LIMIT 5
भाग # 2 को जोड़ने का तरीका पता लगाने के लिए संघर्ष:
मैं एक प्रश्न उस भाग # 1 सफलतापूर्वक करता है। टेबल्स इस तरह दिखेगा:
USER
id | first_name | last_name
-- | ---------- | ---------
0 | John | Doe
1 | Jane | Doe
2 | Bob | Smith
3 | Mike | Jones
FRIEND
id | requester_id | recipient_id | confirmed
-- | ------------ | ------------ | ---------
0 | 0 | 1 | 1
1 | 3 | 1 | 1
2 | 2 | 3 | 1
3 | 1 | 2 | 1
USER_EVENT
id | user_id | event_id
-- | ------- | --------
0 | 0 | 43
1 | 0 | 846
2 | 0 | 1058
3 | 1 | 846
4 | 1 | 912
5 | 2 | 537
6 | 3 | 846
नमूना डेटा एक प्रश्न मिल सकता है:
:search_input (e.g. '%bob%')
:my_user_id (e.g. 3)
:event_id (e.g. 846)
Sidenote: ''% bob%' 'सुनिश्चित करें कि आप उन घुंघराले उद्धरणों का उपयोग नहीं करते हैं। इसे '% bob%' के रूप में पढ़ना चाहिए। अन्यथा, आपका कोड एक पार्स त्रुटि को मिटा देगा। –
इसे इंगित करने के लिए धन्यवाद। –