¿Cómo escribir una consulta Drupal 7 con las propiedades "contar" y "tener"?

14

No puedo hacer que la siguiente consulta funcione en los estándares de drupal7 ... ¿Alguien puede ayudarme con esto? Es poco urgente ...

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
Jonás
fuente

Respuestas:

25

Esto está fuera de mi cabeza, así que ten cuidado ...

$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
fuente
Gracias Clive! Un elemento común adicional: ordenar por el recuento que agregué$query->orderBy('ncount', 'DESC');
greggles