SQL - Mostrar resultados cuyo valor sea cero en sentencias con inner joins

   
Vista:

Mostrar resultados cuyo valor sea cero en sentencias con inner joins

Publicado por Johnny (4 intervenciones) el 02/09/2011 12:49:51
Buenos días.

Este es mi primer post tras bastante tiempo de consulta en el foro. Un foro que me ha aportado bastantes soluciones.

Tengo un problemilla a la hora de mostrar los resultados de una consulta. Quiero listar el total de asistencia a un Foro por cada comunidad autónoma. Lo consigo pero no sé como conseguir que aquellas comunidades cuyo total sea cero también aparezcan en el resultado y muestren el valor cero.

Mis tablas:
USUARIO cuyas columnas son: idUsuario(int),nombre(varchar(50)),apellido1(varchar(50)),idCCAA(int)
ASISTENCIA : idAsistencia(int),idUsuario(int), idForo(int)
CCAA: idCCAA(int),CCAA(varchar(50))
FORO: idForo(int),Titulo(varchar(50))

1
2
3
4
5
6
select c.CCAA, COUNT(c.idCCAA)
		from Asistencia A
		inner join Usuario U on A.idUsuario=U.idUsuario
		inner join CCAA C on C.idCCAA=U.idCCAA
		where A.idForo=1
		group by c.CCAA ,c.idCCAA order by c.idCCAA


Y este es el resultado en el que se omiten varias comunidades como pueden ser: Asturias, Galicia..etc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Andalucía	7
Aragón	7
Illes Balears	3
Canarias	5
Cantabria	3
Castilla y León	8
Castilla - La Mancha	11
Cataluña	11
Comunidad Valenciana	5
Extremadura	1
Madrid	85
Murcia	5
Navarra	3
País Vasco	2
La Rioja	4
Ceuta	1
Melilla	1


¿Alguna solución?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Mostrar resultados cuyo valor sea cero en sentencias con inner joins

Publicado por Johnny (4 intervenciones) el 02/09/2011 13:09:30
Olvidé comentar que estoy con MS SQL Server
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mostrar resultados cuyo valor sea cero en sentencias con inner joins

Publicado por leonardo_josue (880 intervenciones) el 02/09/2011 15:50:17
Hola Johnny:

Ya en otras ocasiones se ha mencionado que para este tipo de consultas es necesario hacer un LEFT JOIN o RIGTH JOIN, en lugar del INNER, como lo estás haciendo.

Una relación tipo INNER JOIN es 1 a 1, es decir que deben existir registros en ambas tablas para poder presentarse en la columna. La relación tipo LEFT JOIN es 0 a n, es decir que no es necesario que existan registros en ambas tablas, algo semejante sucede con el RIGTH JOIN, varía solo en cuanto al orden de las tablas.

Dale un vistazo a http://es.wikipedia.org/wiki/Join, ahí se muestra claramente el funcionamiento de cada tipo de JOIN.

Intenta cambiar tu consulta y si continuas con problemas lo comentas en el foro para tratar de ayudarte a afinarla.

Saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mostrar resultados cuyo valor sea cero en sentencias con inner joins

Publicado por Johnny (4 intervenciones) el 06/09/2011 10:00:05
Lo probé pero posiblemente mal porque no recibía ni si quiera valores NULL. Que al menos en ese caso podría utilizar la función ISNULL y darle valor cero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mostrar resultados cuyo valor sea cero en sentencias con inner joins

Publicado por Johnny (4 intervenciones) el 12/09/2011 10:39:24
Debería funcionar así, no??
1
2
3
4
5
select c.CCAA, COUNT(c.idCCAA) from Asistencia A
		inner join Usuario U on A.idUsuario=U.idUsuario
		left join CCAA C on C.idCCAA=U.idCCAA
		where A.idForo=3
		group by c.CCAA ,c.idCCAA order by c.idCCAA

La columna que quiero que muestre todas sus registros es CCAA.

Algún cable?? Gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Mostrar resultados cuyo valor sea cero en sentencias con inner joins

Publicado por Paco (1 intervención) el 13/09/2011 22:09:26
Sí pero puede que falle por el count?? A ver si hay algún experto que pueda ayudarte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar