Hola a todos:
Creo que aquí tenemos varios errores de conceptos de SQL que es necesario aclarar.
Maganius nos dice en el primer post:
Código:
Lo que intento hacer es que me diga cuantos Titulos tengo
y cuantas Personas tengo.
En primer lugar deberías comenzar por decirnos si las tablas tienes relación, si es así cómo están relacionados los datos, poner algunos datos de ejemplo y decirnos qué es lo que pretendes obtener... veamos este ejemplo para ver si es más o menos lo que quieres. Supongamos que tenemos estas dos tablas:
Código MySQL:
Ver original+------+-------------+
| idA | descripcion |
+------+-------------+
| 1 | uno |
| 2 | dos |
| 3 | tres |
| 4 | cuatro |
+------+-------------+
+------+------+
| idB | idA |
+------+------+
| 1 | 1 |
| 2 | 3 |
| 3 | 4 |
| 3 | 5 |
+------+------+
Observa que en ambas tablas hay 4 elementos, pero en la tablaB sólo hay tres que están relacionados con la tablaA (el idA = 5 no existe en la tablaA)... si quisieras obtener el total de elementos de la TablaA y el total de elementos relacionados en la tablaB podrías hacerlo así:
Código MySQL:
Ver original+---------+---------+
| total_a | total_b |
+---------+---------+
| 4 | 3 |
+---------+---------+
Si las tablas en realidad no guardan ninguna relación, pero quisieras obtener ambos totales en una sola consulta podrías hacerlo con dos subconsultas:
Código MySQL:
Ver original+---------+---------+
| total_a | total_b |
+---------+---------+
| 4 | 4 |
+---------+---------+
Pero te repito, para necesitas darnos más información acerca de tus tablas y tus datos para poder darte una respuesta más puntual:
Segundo, djaevi en su post nos dice esto:
Cita: por empezar cuando usas GROUP BY no se puede usar WHERE debes usar HAVING y el HAVING va despues del GROUP BY, el HAVING hace lo mismo que el WHERE pero debe usarse cuando usas GROUP BY
Esto es completamente FALSO... creo que estamos entendiendo mal cómo funcionan estás cláusulas: son dos cosas muy distintas el WHERE y el HAVING, aunque puede parecer que tienen la misma función. SI PUEDES UTILIZAR LA CLÁUSULA WHERE en una consulta donde utilices GROUP BY... esta simplemente sirve para filtrar la información que deseas agrupar, la cláusula HAVING se aplica después del GROUP BY y debería hacer referencia justamente a columnas del group by o que tengan que ver con funciones de agregación... en la documentación aparecen esto de manera clara:
http://dev.mysql.com/doc/refman/5.0/es/select.html
De tal suerte que tu podrías utilizar sin ningún problema sólo la cláusula where, sólo la cláusula HAVING o AMBAS:
Código MySQL:
Ver original+----------+
+----------+
| 2 |
+----------+
+----------+
+----------+
| 1 |
| 1 |
| 2 |
+----------+
+----------+
+----------+
| 2 |
+----------+
Lo que NO PUEDES HACER ES ALGO COMO ESTO:
Código:
SELECT count(*) FROM tablaB WHERE idB > 1 AND COUNT(*) > 1;
Es decir, utilizar funciones de agregación en el WHERE ni tampoco deberías hacer esto:
Código:
SELECT count(*) FROM tablaB GROUP BY idB
-> HAVING COUNT(*) > 1 AND idA = 1;
es decir, involucrar campos que no intervengan en el GROUP BY en la sección HAVING.
Saludos
Leo.