Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

no me sale una consulta select donde intervienen dos tablas

Estas en el tema de no me sale una consulta select donde intervienen dos tablas en el foro de Bases de Datos General en Foros del Web. Hola a todos. Mi duda es la siguiente: Quiero realizar una consulta pero no me sale bien. Tengo dos tablas, una llamada servidores cuya clave ...
  #1 (permalink)  
Antiguo 19/07/2004, 04:28
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 8 meses
Puntos: 7
Sonrisa no me sale una consulta select donde intervienen dos tablas

Hola a todos. Mi duda es la siguiente:

Quiero realizar una consulta pero no me sale bien. Tengo dos tablas, una llamada servidores cuya clave primaria es IP(direccion IP del servidor) y otra tabla llamada tareas que entre sus campos tiene Estado,IP,etc.
Como podeis ver ambas tablas se relacionan por el valor de IP.

Yo lo que quiero hacer es lo siguiente:

Obtener un listado del numero de tareas que hay en cada servidor con la condicion de que el estado de las tareas (campo Estado de la tabla tareas) no sea 'finalizado'.

La consulta que yo hago es:

select servidores.IP,servidores.Nombre,tareas.Estado
count(tareas.IP)/servidores.Procesadores as NumTar from servidores left join tareas
on servidores.IP=tareas.IP where tareas.Estado not like 'finalizado' group by tareas.IP order by NumTar

La division esa que tareas.IP/servidores.Procesadores se hace porque como quiero averiguar la carga que hay en cada servidor, el numero de procesadores que tenga el servidor hay que tenerlo en cuenta.

Pues esta consulta sólo me da aquellos servidores que tienen alguna tarea.

Yo quiero que me aparezcan todos los servidores con su numero de tareas (aunque éste sea cero).

¿Como se hace esta consulta?

Saludos.
  #2 (permalink)  
Antiguo 19/07/2004, 09:30
 
Fecha de Ingreso: agosto-2003
Mensajes: 448
Antigüedad: 21 años, 3 meses
Puntos: 1
lo que estas haciendo es un inner join, lo que tenés que hacer es un outer join
  #3 (permalink)  
Antiguo 19/07/2004, 13:26
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 8 meses
Puntos: 7
Gracias por responder victork py. He sustituido el inner join por el outer join y me da error como si la consulta estuvier mal construida.

¿hay que cambiar algo mas para que funcione ese outer join?

Un saludo.
  #4 (permalink)  
Antiguo 20/07/2004, 08:36
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 1 mes
Puntos: 3
Holas... prueba con esta consulta, aunque no es lo màs optimizado ya que es sin "Joins":

select s.IP,servidores.Nombre,t.Estado
from servidores s, tareas t
where s.ip = t.ip
and t.estado <> 'finalizado'



Espero te sirva
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #5 (permalink)  
Antiguo 21/07/2004, 08:22
Avatar de MCasanova  
Fecha de Ingreso: enero-2002
Ubicación: Concepción, La Perla del BioBio, Chile
Mensajes: 144
Antigüedad: 22 años, 10 meses
Puntos: 0
aeb_asturias:
En sql server utilizo el * (asterisco) para indicar que muestre los registros de una tabla aun cuando no exista su par en la otra tabla
Así
servidores.IP =* tareas.IP
o
servidores.IP *= tareas.IP
(No recuerdo a que lado va el *)

Ojalá te resulte

Salu2

Manuel
__________________
"La inteligencia consiste no sólo en el conocimiento, sino también en la destreza de aplicar los conocimientos en la práctica", Aristóteles
[img][/img]
  #6 (permalink)  
Antiguo 21/07/2004, 08:26
 
Fecha de Ingreso: agosto-2003
Mensajes: 448
Antigüedad: 21 años, 3 meses
Puntos: 1
Probalo primero sin el count para ver si te traen bien los registros, luego agregale el count, y ojo que en la clausua group by deben estar todas las otras columnas, en este caso : servidores.IP, servidores.Nombre, tareas.Estado
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:33.