it-swarm-es.com

Consulta única SQL para tirar de los dos nodos recientes de cada tipo de nodo

Como se mencionó en el título, me preguntaba cómo se puede lograr esto con una sola consulta SQL. Todo lo que necesito es el ID de nodo de la tabla de nodos que coinciden con los criterios dados.

4
Sivaji
$node_types = node_get_types(); // or create own object of node types
$query = $types = array();

foreach($node_types AS $type){
  $query[] = "(SELECT node.* FROM {node} node WHERE node.status <> 0 AND node.type = '%s' ORDER BY node.nid DESC LIMIT 2)";
  $types[] = $type->type;
}

$query = implode(' UNION ', $query);
$result = db_query($query, $types);

$items = '';
while($row = db_fetch_object($result)){
  $items[] = l($row->title, 'node/'. $row->nid);
}

print theme_item_list($items);

Ejecutar tiempo: 0.002s

4
dobeerman

Esto es posible con vistas, utilizando archivos adjuntos. Sin embargo, no será una sola consulta de SQL.

Sin embargo, será más fácil de mantener (ya que usa las visitas GUI) en el futuro (especialmente si tiene varios desarrolladores en su equipo).

0
wiifm