कैसे "गिनती" और "होने" गुणों के साथ एक Drupal 7 क्वेरी लिखने के लिए?


14

मैं drupal7 मानकों में निम्नलिखित क्वेरी काम करने में असमर्थ हूं..क्या कोई मेरी मदद कर सकता है? यह थोड़ा जरूरी ...

SELECT n.nid AS nid, n.title AS title, count(n.title) AS ncount 
FROM node n 
INNER JOIN taxonomy_index tn ON n.nid = tn.nid 
WHERE (n.type = 'test') 
AND (tn.tid IN( 23,37)) 
AND (n.title LIKE '%name%') 
AND (n.status = 1) 
GROUP BY n.nid 
HAVING ncount = 2

जवाबों:


25

यह मेरे सिर के ऊपर से है इसलिए सावधानी बरतें ...

$query = db_select('node', 'n')
  ->fields('n', array('nid', 'title'))
  ->condition('n.type', 'test')
  ->condition('tn.tid', array(23, 37))
  ->condition('n.title', '%' . db_like('name') . '%', 'LIKE')
  ->condition('n.status', 1)
  ->groupBy('n.nid');

// Add the COUNT expression
$query->addExpression('COUNT(n.title)', 'ncount');

// Add the HAVING condition
$query->havingCondition('ncount', 2);

// Add the JOIN
$query->join('taxonomy_index', 'tn', 'n.nid = tn.nid');

$results = $query->execute();

धन्यवाद, क्लाइव! एक अतिरिक्त सामान्य तत्व: मैंने जो गिनती की है, उसके अनुसार सॉर्ट करने के लिए$query->orderBy('ncount', 'DESC');
greggles
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.