SQL - subconsultas

 
Vista:

subconsultas

Publicado por mar (4 intervenciones) el 31/01/2007 03:07:06
Estoy haciendo una consulta con la clasificacion de la liga de futbol. Salen todos los datos, partidos ganados en casa,perdidos, empatados y lo mismo con los de fuera. los saco no un count. El problema es que al sacar los PUNTOS, le digo que me sume los partidos ganados en casa+ganfuera y los multiplique por 3. Sale bien en todos menos en los que, por ejemplo nunca han ganado en casa o fuera que el campo puntos sale vacio.

como puedo solucionarlo? gracias. Os pongo un poquito de codigo, todo es muy largo:
elect distinct nombre,p_jug,( (ganocasa+ganofuera)*3 + empatecasa+empatefuera)as puntos,ganocasa,empatecasa,pierdecasa,ganofuera,empatefuera,pierdofuera,goles_fuera,goles_casa from equipos full join

--partidos jugados
(select id_equipo,count(id_equipo) as p_jug from partidos natural join casa_visita
where partidos.fecha<current_date and id_temporada='6' group by id_equipo)as jug on equipos.id_equipo=jug.id_equipo full join

-- partidos ganados en casa
(select id_equipo,count(id_equipo) as ganocasa from partidos natural join casa_visita
where casa_visita='casa' and goles_casa>goles_visita and partidos.fecha<current_date and id_temporada='6' group by id_equipo)as ganados_c on equipos.id_equipo=ganados_c.id_equipo full join.................CONTINUA
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
sin imagen de perfil

RE:subconsultas

Publicado por Liliana (426 intervenciones) el 31/01/2007 18:14:43
Hola,
(MS SQL Server)
(ISNULL (ganocasa,0) + ISNULL (ganofuera,0))
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

RE:subconsultas

Publicado por mar (4 intervenciones) el 31/01/2007 20:18:12
y donde lo coloco?
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

RE:subconsultas

Publicado por Isaías (5072 intervenciones) el 31/01/2007 20:48:07
Con el permiso de Liliana

Si sumas 2 columnas y una de ellas contiene NULL, el resultado que te de, siempre sera NULL, para evitar esto, cuentas con la funcion ISNULL(), en tu codigo:

(ISNULL(ganocasa+ganofuera), 0)*3

Traduccion, si la suma de ganocasa+ganofuera, te da NULL, cambialo por un CERO (0)
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

RE:subconsultas

Publicado por mar (4 intervenciones) el 01/02/2007 01:43:58
ejecuto:
select ISNULL(ganocasa, 0)*3,nombre,p_jug,..........

y me da error....(con postgreeSQL)

ERROR: function isnull(bigint, integer) does not exist
HINT: No function matches the given name and argument types. You may need to add explicit type casts.

Que puedo hacer?
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
sin imagen de perfil

RE:subconsultas

Publicado por Liliana (426 intervenciones) el 01/02/2007 12:21:03
Hola,
La respuesta de ISNULL que te dimos con Isaías corresponde a MS SQL Server, como te indiqué en la primera respuesta.
Por tu consulta, asumo que PostgreSQL trata los valores nulos al menos de una manera similar, así que tendrás que investigar cuál es la función que realiza la conversión como te indicó Isaías.
Saludos.

PD: ya que este es un foro en el que participan usarios de distintos motores, es importante indicar cuál es el que estamos usando en el momento de hacer la consulta.
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

RE:subconsultas

Publicado por Isaías (5072 intervenciones) el 01/02/2007 21:11:58
Te juro, cada que puedo, comento lo mismo que tu indicas, ejemplo:

"Chicos(as), tengo PostgreSQL (Oracle, Sybase, Informix, MySQL, etc) y mi problema es el siguiente"...........
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