Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/01/2010, 05:38
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Me cuenta cualquier cosa

Sin acabar de entender tu estructura de tablas voy a intentar analizar los que estas haciendo...

Código MySQL:
Ver original
  1. SELECT DISTINCT og.nid AS cat_id,
  2.                              MAX(node.nid) AS art_id,
  3.                              count(node.nid) as cantidad
  4.         FROM og
  5.                LEFT JOIN og_ancestry
  6.                          ON og_ancestry.group_nid = og.nid
  7.                LEFT JOIN node
  8.                          ON node.nid = og_ancestry.nid
  9.                LEFT JOIN users
  10.                          ON users.uid = node.uid
  11.                LEFT JOIN term_node tn
  12.                          ON tn.nid=og.nid
  13.                join node node2
  14.                          on node2.nid=og.nid
  15.         WHERE node.type = 'articulo'
  16.               and node.status=1
  17.               and tn.tid=1
  18.               and node2.type='articulos'
  19.         GROUP BY type
  20.         ORDER BY art_id desc ;

Si haces cualquier consulta es facil que te conteste cualquier cosa....

Código MySQL:
Ver original 

En una consulta agregada (group by) no suele ser necesario...

Código MySQL:
Ver original
  1. LEFT JOIN users
  2.                          ON users.uid = node.uid

Los usuarios parece que no los necesitas....no???

Código MySQL:
Ver original 

Código MySQL:
Ver original
  1. GROUP BY og.nid

Si quieres saber el numero de articulos por categoria deberas agrupar por categorias (og.nid AS cat_id) ... no?


Código MySQL:
Ver original
  1. LEFT JOIN node
  2.                          ON node.nid = og_ancestry.nid
  3.                ...
  4.                join node node2
  5.                          on node2.nid=og.nid
  6.                ...
  7.        WHERE node.type = 'articulo'
  8.         ...
  9.               and node2.type='articulos'

simplificando

Código MySQL:
Ver original
  1. LEFT JOIN node
  2.                          ON node.nid = og_ancestry.nid
  3.        ...
  4.        WHERE (node.type = 'articulo' or node.type='articulos')
  5.                and ...


Código MySQL:
Ver original
  1. ORDER BY art_id desc ;

creo que no puedes usar el alias aqui

Código MySQL:
Ver original
  1. ORDER BY MAX(node.nid) desc ;




Código MySQL:
Ver original
  1. SELECT og.nid AS cat_id,
  2.                              MAX(node.nid) AS art_id,
  3.                              count(node.nid) as cantidad
  4.         FROM (((og
  5.                LEFT JOIN og_ancestry
  6.                          ON og_ancestry.group_nid = og.nid)
  7.                LEFT JOIN node
  8.                          ON node.nid = og.nid)
  9.                LEFT JOIN term_node tn
  10.                          ON tn.nid=og.nid)
  11.         WHERE (node.type = 'articulo' or node.type='articulos')
  12.               and node.status=1
  13.               and tn.tid=1
  14.         GROUP BY og.nid
  15.         ORDER BY MAX(node.nid) desc ;

Suerte

Quim

1001