Bagaimana cara menulis kueri Drupal 7 dengan properti “hitung” dan “memiliki”?

14

Saya tidak dapat membuat kueri berikut berfungsi dalam standar drupal7..Apakah ada yang bisa membantu saya dengan ini? Ini sedikit mendesak ...

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
Jons
sumber

Jawaban:

25

Ini dari atas kepalaku jadi berhati-hatilah ...

$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();
Clive
sumber
Terima kasih, Clive! Satu elemen umum tambahan: untuk mengurutkan berdasarkan jumlah yang saya tambahkan$query->orderBy('ncount', 'DESC');
greggles