SQL - Varios Counts

 
Vista:

Varios Counts

Publicado por Francisco Javier (3 intervenciones) el 24/05/2010 18:49:11
Hola buenas miren, tengo que implementar 2 consultas que he conseguido que funcionen de manera independiente en una sola consulta.
El problema es que las consultas llevan la funcion count y al intentar construirlas en una sola los counts devuelven las 2 salidas iguales.

Les pongo las 2 consultas que cada una cumple su funcion de manera independiente a ver si mi podeis echar un cable:

select especialidad.nombre_especialidad, count(cama.num_cama) from especialidad,cama,habitacion where habitacion.num_habitacion=cama.num_habitacion and habitacion.num_planta=especialidad.num_planta group by nombre_especialidad;

select especialidad.nombre_especialidad, count(cama.num_cama) from especialidad,cama,habitacion where habitacion.num_habitacion=cama.num_habitacion and habitacion.num_planta=especialidad.num_planta and cama.num_paciente is null group by nombre_especialidad;

Lo que tienen que hacer en conjuntos es mostrarme en una tabla las especialiadades, en la siguiente las camas de las que dispone cada especialidad y en la tercera las camas libres de cada especialidad.
Si necesitan mas detalles diganmelo.
Estoy usando mysql.
Espero su respuesta, muchisimas gracias y un saludo
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
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

RE:Varios Counts

Publicado por Leonardo Josue (1173 intervenciones) el 26/05/2010 16:43:51
Buenos días Francisco Javier...

Puedes intentar lo siguiente:

select X.*, Y.total_ocupadas from (
select especialidad.nombre_especialidad, count(cama.num_cama) as total_camas
from especialidad,cama,habitacion where habitacion.num_habitacion=cama.num_habitacion and habitacion.num_planta=especialidad.num_planta group by nombre_especialidad
) X INNER JOIN
(
select especialidad.nombre_especialidad, count(cama.num_cama) as total_ocupadas
from especialidad,cama,habitacion where habitacion.num_habitacion=cama.num_habitacion and habitacion.num_planta=especialidad.num_planta and cama.num_paciente is null group by nombre_especialidad
) Y ON X.nombre_especialidad = Y.nombre_especialidad

El problema es que no estoy seguro de que MySQL te permita hacer este tipo de consultas. En caso de que te marque error entonces puedes reemplazar el count por un sum, pero para poder darte el select te pediría primero que pusieras un poco más de información acerca de las tablas que forman la consulta así como un ejemplo de los datos que contienen cada una de las tablas.

saludos y espero tus comentarios.
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

RE:Varios Counts

Publicado por Francisco Javier (3 intervenciones) el 27/05/2010 12:15:04
Pues la consulta entra pero no me muestra nada XDD

Voy a ver si la puedo retocar para k funcione jeje

Lo que necesito es que me muestre el numero total de habitaciones para cada especialidad y el numero de camas libres para cada especialidad.
Las tablas implicadas son:

create table habitacion(
num_habitacion int(11) not null auto_increment,
num_planta int(11),
nombre_especialidad varchar(40),
primary key (num_habitacion)
);

create table cama(
num_cama int(11) not null auto_increment,
num_habitacion int(11),
num_paciente int(11),
primary key (num_cama)
);

create table especialidad(
num_especialidad int(11) not null auto_increment,
nombre_especialidad varchar(40),
num_planta int(11),
primary key (num_especialidad)
);

create table movimientos(
id_movimientos int(11) not null auto_increment,
num_cama int(11),
num_paciente int(11),
fecha_entrada date,
fecha_salida date,
primary key (id_movimientos)
);

Espero vuestras respuestas un saludo y GRACIASSSSSSSS
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:Varios Counts

Publicado por Francisco Javier (3 intervenciones) el 27/05/2010 12:44:46
YA ESTAAAAAAAAAAAAAAAAA
LEO TE DEBO LA VIDAAAAAAA
Arregle tu consulta la cambie por un left join le meti un COALESCE y arregle las condiciones y como dios!!!!!!!!!!

MIL GRACIASSSSSSSSSSSSS
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