Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

लार्वा में COALESCE

खैर, ओपी बहुत मददगार नहीं था, लेकिन मैं इसे एक शॉट दूंगा! मुझे लगता है, कि votes तालिका में आइटम पर उपयोगकर्ताओं द्वारा डाले गए वास्तविक वोट होते हैं। इसका मतलब है, कि अगर किसी आइटम को कोई वोट नहीं मिला, तो वह आइटम आईडी (masterItemId ) votes . में मौजूद नहीं है टेबल।

इसका अर्थ यह है कि वोट तालिका को masterItemId पर मुख्य आइटम तालिका में शामिल होने के लिए छोड़ दिया जाना है खेत। मैं मुख्य आइटम तालिका को कॉल करूंगा:items , और मान लें कि इसमें एक itemId . है masterItemId . से मेल खाने वाली फ़ील्ड votes . में फ़ील्ड टेबल। SQL शब्दों में:

select items.itemId, ifnull(sum(votes.votes),0) as votesSum
from items left join votes on items.itemId=votes.masterItemId
where votes.voteDate between ... and ... and <other conditions>
group by items.itemId

मैं लारवेल से परिचित नहीं हूं, लेकिन आपको कुछ इस तरह की आवश्यकता होगी, हालांकि नॉट ट्रीट इज कॉपी-पेस्ट कोड:

$multipleitems = DB::table('items')
                 ->leftJoin('votes','items.itemId','=','votes.masterItemId')
                 ->select('items.itemId',DB::raw('ifnull(sum(votes.votes),0) as voteSum'))
                       ->whereBetween('votes.voteDate',array($startDate,$endDate))
                       ->where($condition)
                       ->groupBy('items.temId')
                       ->get();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कोडनिर्देशक में संग्रहित प्रक्रिया को कॉल करना

  2. #1221 - UPDATE और ORDER BY का गलत उपयोग

  3. MySQL में संग्रहित प्रक्रिया कैसे बनाएं

  4. मैं अपने डेटाबेस कनेक्शन को कैसे सुरक्षित बना सकता हूँ?

  5. पंक्तियों को वापस करने के 2 तरीके जिनमें MySQL में केवल गैर-अल्फ़ान्यूमेरिक वर्ण होते हैं