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

मैं सशर्त एकत्रीकरण mysql को लार्वा क्वेरी में कैसे परिवर्तित कर सकता हूं?

आपको aggregate . की आपूर्ति करनी होगी क्लॉज होने में फ़ंक्शन, हम उसी का पुन:उपयोग कर सकते हैं जो हमारे पास इस तरह से चयन में है

$brand = "MAX(CASE WHEN b.attribute_code = 'brand' then b.attribute_value END)";

$model = "MAX(CASE WHEN b.attribute_code = 'model' then b.attribute_value END)";

$category = "MAX(CASE WHEN b.attribute_code = 'category' then b.attribute_value END)";

$subcategory = "MAX(CASE WHEN b.attribute_code = 'subcategory' then b.attribute_value END)";

$brandName = 'honda';

$query = Item::selectRaw("a.number, a.description, {$brand} as brand, {$model} as model, {$category} as category, {$subcategory} as subcategory")
        ->from('items as a')
        ->join('attr_maps as b','b.number','=','a.number')
        ->groupBy('a.number')
        ->havingRaw("{$brand} = ?", [$brandName])
        ->orderBy('description')
        ->paginate(10);

return $query;

संपादित करें: टिप्पणियों के बाद

आप इस तरह प्रत्येक पैरा के लिए निष्पादित कर सकते हैं

$query = Item::selectRaw("a.number, a.description, {$brand} as brand, {$model} as model, {$category} as category, {$subcategory} as subcategory")
    ->from('items as a')
    ->join('attr_maps as b','b.number','=','a.number')
    ->groupBy('a.number')
    ->orderBy('description');

foreach($param as $key => $value) {
     $query = $query->havingRaw("{$$key} = ?", [$value]);
}

$results = $query->paginate(10);

return $results;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक बार में Collation को utf8_bin में कैसे बदलें

  2. MySQL केवल चालू माह के भीतर?

  3. JSP से MySQL को जोड़ना

  4. MySQL सम्मिलित करें:पहले परीक्षण करें?

  5. प्राथमिक कुंजी और अद्वितीय कुंजी के बीच का अंतर