में जहां मैं आइटम संपत्तियों की एक मेज है, और इस तरह से संरचित user_favorites की तालिका:MySQL - एक सबक्वेरी और
- आईडी
- ITEM_ID
- user_id
- पसंदीदा (bool)
जब कोई उपयोगकर्ता "पसंदीदा" आइटम करता है तो यह आइटम आईडी, उपयोगकर्ता आईडी का उपयोग करके इस तालिका में एक पंक्ति जोड़ता है, और पसंदीदा प्रॉपर्टी को 1 पर सेट करता है (यदि वे "प्रतिकूल ई "यह 0 में बदल गया है)।
मैं उत्पादों की सूचियों को देखते समय उपयोगकर्ता के पसंदीदा को दिखाने का तरीका जानने का प्रयास कर रहा हूं।
मैं वर्तमान में उपयोगकर्ता खोज इनपुट के आधार पर एक प्रश्न करता हूं और उत्पाद आईडी की एक श्रृंखला प्राप्त करता हूं। अब मैं उन उत्पादों के बीच उत्पाद जानकारी की एक तालिका बनाने के लिए एक प्रश्न करना चाहता हूं - और मैं यह शामिल करना चाहता हूं कि आइटम उपयोगकर्ता पसंदीदा है या नहीं।
मैं कुछ इस तरह की कोशिश की है:
select i.tid, i.name as name, i.image as image, (SELECT favorite FROM user_favorites WHERE user_id=77) as favorite
FROM items i
left join user_favorites ufav on (ufav.item_id = i.tid)
WHERE i.tid IN (79, 98, 105 . . .)
order by favorite DESC, name ASC
ज़ाहिर है ..लेकिन मैं एक Subquery रिटर्न 1 से अधिक पंक्ति त्रुटि
मैं भी कुछ इस तरह की कोशिश की है मिलती है:
select i.tid, i.name as name, i.image as image, ufav.favorite as favorite
FROM items i
left join user_favorites ufav on (ufav.item_id = i.tid)
WHERE i.tid IN (79, 98, 105 . . .) AND ufav.user_id=77
order by favorite DESC, name ASC
। । । लेकिन यह केवल उन वस्तुओं को लौटाता है जो पसंदीदा हैं (जैसा कि आप उम्मीद करेंगे)। मैं सभी आईडी की सूची में आइटम वापस करना चाहता हूं, लेकिन मैं यह भी जानना चाहता हूं कि कौन से आइटम "पसंदीदा" नहीं हैं।
क्या मैं इसे एक प्रश्न में कर सकता हूं, या दो अलग-अलग प्रश्नों को चलाने का मेरा सबसे अच्छा विकल्प है?
साशी प्रतिक्रिया के लिए धन्यवाद, लेकिन जॉन वू सही है: मुझे उन वस्तुओं की आवश्यकता है जो परिणामों में दिखाने के लिए अनुकूल नहीं हैं। – Zarwell