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

Laravel 5.1 में इसे (लेफ्ट जॉइन, सबक्वेरी) कैसे लिखें?

Laravel के क्वेरी बिल्डर के साथ सबक्वायरी का उपयोग करने के लिए, आपको इसे इस तरह से जॉइन में जोड़ना चाहिए:

->leftJoin(DB::raw("(SELECT [...]) AS p"), 'p.post_id', '=', 'posts.id')

परिकलित फ़ील्ड के लिए उपनाम बनाना भी बेहतर है, जैसा आपने अपनी कच्ची क्वेरी में किया था:

COUNT(*) AS count

इन परिवर्तनों के बावजूद, जब तक मैं गलत नहीं हूँ, आप अपनी क्वेरी को सरल बनाकर शुरू कर सकते हैं। उपश्रेणियों को इस तरह छोड़ें:

SELECT
  p.id,
  p.title,
  p.created_at,
  p.updated_at,
  u.name,
  COUNT(c.id) AS comments_count,
  COALESCE(SUM(pl.status), 0) AS status_sum
FROM
  posts p
LEFT OUTER JOIN
  users u
ON 
  u.id = p.user_id
LEFT OUTER JOIN 
  postslikes pl
ON 
  pl.post_id = p.id
LEFT OUTER JOIN 
  comments c
ON 
  c.post_id = p.id 
ORDER BY 
  comments_count DESC
GROUP BY
  p.id

फिर, इस नई क्वेरी के साथ, आप इसे बनाने के लिए Laravel का उपयोग कर सकते हैं:

DB::table('posts')
  ->select([
    'posts.id',
    'posts.title',
    'posts.created_at',
    'posts.updated_at',
    'users.name',
    DB::raw('COUNT(comments.id) AS comments_count'),
    DB::raw('COALESCE(SUM(postslikes.status), 0) AS status_sum'),
  ])
  ->leftJoin('users', 'users.id', '=', 'posts.user_id')
  ->leftJoin('comments', 'comments.post_id', '=', 'posts.id')
  ->leftJoin('postslikes', 'postslikes.post_id', '=', 'posts.id')
  ->orderBy('comments_count', 'DESC')
  ->groupBy('posts.id')
  ->get();

ध्यान दें कि मैं मान रहा हूं कि आपके पास id . नाम का एक कॉलम है आपकी comments . में तालिका जो प्राथमिक कुंजी है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्यों सरल mysql++ कोड स्टैंडअलोन संकलित करता है, लेकिन परियोजना में नहीं?

  2. तालिका में शामिल होने के लिए MySQL JSON फ़ील्ड का उपयोग करना

  3. MySQL प्रदर्शन ट्यूनिंग पर 10 उपयोगी टिप्स

  4. मैसकल डीबी टेबल पंक्तियाँ गायब हो रही हैं

  5. पोस्टग्रेज डेटाबेस के साथ अगली कड़ी mysql से माइग्रेशन के बाद काम नहीं कर रहा है