Sql select row if no row exists in other table -
मेरे पास एक उपयोगकर्ता तालिका और एक
पसंद तालिका है। एक उपयोगकर्ता को यादृच्छिक अन्य उपयोगकर्ता के डेटा प्रदर्शित किया जाता है और यह तय कर सकता है कि उसे पसंद है या नापसंद है। मैं अभिनय उपयोगकर्ता के लिए एक नया यादृच्छिक उपयोगकर्ता साझेदार चुनने के लिए संघर्ष कर रहा हूं जिसने अभी तक उसे रेट नहीं किया है!
अब, मैं उन सभी उपयोगकर्ताओं को चुनने की कोशिश कर रहा हूं जिनके पास
likes < / कोड> तालिका में, रेट किए गए उपयोगकर्ता
पार्टनर पर अभिनय उपयोगकर्ता
उपयोगकर्ता के रिलेशन रेटिंग के साथ।
उपयोगकर्ता तालिका एक मानक उपयोगकर्ता तालिका है, में
पसंद मेरे पास कॉलम,
आईडी ,
उपयोगकर्ता ,
पार्टनर और
मेरा प्रयास:
$ $ ओयूसर- & gt; आईडी एक अभिनय उपयोगकर्ता है $ oSearch = Db_User :: Select ('db_users। *', 'db_likes। *') - & gt; जहां ('db_users.id', '& lt; & gt;', $ oUser- & gt; आईडी) - & gt; जहां ('db_likes.user', '=', $ oUser- & gt; आईडी) - & gt; जहां ('db_likes.relation', '& lt; & gt;', 'नापसंद') - & gt; जहां ('db_likes.relation', '& lt; & gt;', 'हो सकता है') - & gt; जुड़ें ('db_likes') - जहां ('db_likes.relation', '& lt; & gt;', 'जैसा') - & gt; , 'db_users.id', '=', 'db_ पसंद पर्टनर ');
यह गलत है, क्योंकि मुझे इस प्रयास से कोई भी नया उपयोगकर्ता चयनित नहीं मिला है। मुझे लगता है कि ऐसा इसलिए है क्योंकि पसंद में कोई भी पंक्ति नहीं मिल सकती है! कोई पंक्तियां नहीं हैं जब उन्होंने अभी तक रेट नहीं किया है, तो कोई परिणाम नहीं है क्या यह सही है?
संपादित करें:
$ oSearch = Db_User :: चुनें ('डीबी_युसर। *') - & gt; जहां ('db_users.id', '& lt ; ('', $ oUser- & gt; आईडी) - & gt; जहां ('db_users.sex', '=', $ strSex) - & gt; जहांारा ("मौजूद नहीं है (db_likes से 1 चुनें जहां db_likes.relation in (' नापसंद ',' जैसे ',' शायद ') और db_likes.user = "। $ OUser- & gt; आईडी।" और db_likes.partner = db_users.id) "); त्रुटि: "{" error ": {" type ":" illuminate \\ डेटाबेस \\ क्वेरी एक्सपेशन्शन "," संदेश ":" SQLSTATE [42S22]: स्तंभ नहीं मिला : 1054 अज्ञात स्तंभ 'IO8fMLYUPHfX1HrwkAWc2xqX' में 'जहां खंड' (एसक्यूएल: चयन करें डीबी_उसर्स <कोड>। * से db_users जहां db_users । आईडी & lt; & gt; IO8fMLYUPHfX1HrwkAWc2xqX और db_users । लिंग = w और मौजूद नहीं है (db_likes से 1 का चयन करें जहां db_likes.relation in ('dislike', 'like', 'हो सकता है') और db_likes.user = IO8fMLYUPHfX1HrwkAWc2xqX और db_likes.partner = db_users.id) रैंड () सीमा द्वारा क्रम 1) "," फ़ाइल ":" \ / अनुप्रयोग \ / MAMP \ / htdocs \ / adamundeva-server \ / Adamundeva \ / vendor \ / laravel \ / framework \ / src \ / Illuminate \ / database / connection.php "," रेखा ": 625}}" **
अंतिम समाधान:
**
$ o खोज = डीबी_यूसर :: का चयन करें ('डीबी_युसर। *') - & gt; जहां ('डीबी_युजर्स.आईडी' , '& Lt; & gt ;, $ oUser- & gt; आईडी) - & gt; जहां (' db_users.sex ',' = ', $ strSex) - & gt; जहांारा ("मौजूद नहीं है (db_likes से 1 चुनें) पुनः db_likes.relation ('नापसंद', 'जैसे', 'शायद') और db_likes.user = '"। $ OUser-> आईडी "'और db_likes.partner = db_users.id)");
आप सभी उपयोगकर्ताओं का चयन करने के लिए मौजूद नहीं है का उपयोग कर सकते हैं अभी तक एक निश्चित उपयोगकर्ता के साथ भागीदारी नहीं की है DB_users dbu से * चुनें * जहां मौजूद नहीं है (db_likes dbl से 1 का चयन करें जहां dbl.relation in ('dislike', 'like', 'शायद') - सुनिश्चित नहीं है कि यह आवश्यक है और dbl.user = $ oUser- & gt; आईडी और dbl.partner = dbu.id)
Comments
Post a Comment