SQL - Código SQL ingresos hospital

 
Vista:

Código SQL ingresos hospital

Publicado por Nacho (3 intervenciones) el 13/07/2015 15:19:28
Muy buenas, soy nuevo en este foro y necesito ayuda urgente con una duda que tengo en un curso de SQL que estoy realizando. Supongamos que tenemos una base de datos sanitaria que contiene las tablas siguientes.

//Información de los hospitales
HOSPITAL {codigo_hospital, nombre, direccion, telefono, numero_camas}

//Salas de cada hospital
SALA {codigo_hospital, codigo_sala, nombre, numero_camas}

//Enfermos
ENFERMO {id_enfermo, apellidos, nombre, fecha_nacimiento, sexo, numero_ss}

//Enfermos ingresados en los hospitales
INGRESOS {id_enfermo, codigo_hospital, codigo_sala, cama}

Si por ejemplo, deseo que se muestren los enfermos (id y apellidos) ingresados en los diferentes hospitales (nombre del hospital) indicando la sala (código y nombre) y la cama que ocupan, ¿cómo podría hacerlo? He pensado en el código SQL necesario pero no estoy seguro de que esté bien, lo dejo por si acaso. Mi código sería así:

select ENFERMO.id_enfermo, ENFERMO.apellidos, HOSPITAL.nombre, SALA.codigo_sala, SALA.nombre, INGRESOS.cama
from ENFERMO, HOSPITAL, SALA, INGRESOS
where ENFERMO.id_enfermo =INGRESOS.id_enfermo and HOSPITAL.codigo_hospital = INGRESOS.codigo_hospital = SALA.codigo_hospital and SALA.codigo_sala = INGRESOS.codigo.sala

Muchas gracias de antemano, 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

Código SQL ingresos hospital

Publicado por leonardo_josue (1173 intervenciones) el 13/07/2015 16:29:18
Hola Nacho:

Tu consulta parece correcta, sin embargo cabe mencionar un pequeño detalle. No nos dices con qué BD's estás trabajando, pero en casi todos (sino es que en todos en realidad), es mejor hacer JOIN's explicitos en lugar de implicitos, es decir, listar las tablas que utilizas en el FROM y hacer las condiciones de igualdad en el WHERE... en otras palabras, en lugar de esto:

1
2
3
4
...
FROM tabla1, tabla2
WHERE tabla1.campo = tabla2.campo
...


haz esto:

1
2
3
4
...
FROM tabla1
[INNER|LEFT|RIGTH] JOIN ON tabla1.campo = tabla2.campo
...

Si tienes dudas en utilizar INNER, LEFT o RIGTH, pregúntale a SANTA WIKIPEDIA, o a SAN GOOGLE, ellos te darán la respuesta. La razón principal para utilizar este tipo de uniones es que los JOIN's son más rápidos, además de que te permite separar las condiciones de igualdad entre las tablas de las condiciones para filtrar los datos, lo que se traduce en un código más legible.

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

Código SQL ingresos hospital

Publicado por Nacho (3 intervenciones) el 13/07/2015 17:06:16
Muchas gracias por la respuesta, trabajo con XAMPP y lo cierto es que no he utilizado INNER, LEFT o RIGHT por falta de experiencia. Si me dices que la consulta es correcta, me doy por satisfecho, porque para lo poco que sé sobre bases de datos me ha costado bastante pensar esa solución. Lo único de lo que no estoy seguro es de si al hacerlo como lo he hecho me dé información redundante innecesaria, pero por más que piense no encuentro otra forma de hacerlo. La única opción que he pensado es omitiendo el "where", pero imagino que es una burrada ya que me daría el producto cartesiano de todas las tablas utilizadas en el "from" y no sería lo que busco, así que imagino que será como lo he realizado.

De nuevo gracias por todo, un saludo

Nacho
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

Código SQL ingresos hospital

Publicado por Nacho (3 intervenciones) el 13/07/2015 23:27:26
Hola de nuevo,

tengo otra duda en el mismo ejercicio, me he fijado que no he puesto en el where: and HOSPITAL.numero_camas = SALA.número_camas.

¿Influye en algo o así está bien? Gracias de antemano, un saludo

Nacho
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

Código SQL ingresos hospital

Publicado por Iraitz (3 intervenciones) el 24/07/2015 14:05:59
Hola! Prueba con esto


1
SELECT id_enfermo, apellidos, nombre as nombre_hospital, código_sala, nombre as nombre_sala, cama FROM ((INGRESOS INNER JOIN ENFERMO ON INGRESOS.id_enfermo = ENFERMO.id_enfermo) INNER JOIN  HOSPITAL ON INGRESOS.codigo_hospital  = HOSPITAL.codigo_hospital) INNER JOIN SALA ON INGRESOS.codigo_sala = SALA.codigo_sala WHERE (AQUÍ VA LA CONDICION A CUMPLIR PARA QUE SE MUESTREN LOS REGISTROS)

En el Where debes de poner la condicion de los registros que quieres que se te muestren, por ejemplo, si quieres que se muestre solo los que estan en el hospital con codigo X pues WHERE codigo_hospital = 'X'

Si por el contrario quieres que se muestren todos lo harías sin cláusula Where.

Tampoco está de más organizar los resultado ordenándolos por algo, por ejemplo, ORDER BY id_enfermo.

Espero que te sirva, y que no me haya equivovado
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