Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema con una consulta (https://www.clubdelphi.com/foros/showthread.php?t=89260)

red_dragon 26-10-2015 03:20:43

Problema con una consulta
 
Hola a todos estoy haciendo un reporte y bueno tengo un problema con una consulta sql dos tablas detalladas asi:

Tabla hospital.
Código:

Cod_hospital │ nombre
01│ san martin
02│ san pedro

Tabla medicos.
Código:

Cod_hospital│dni│nombre│especialidad
01│234234│ juan│medico
02│5234234│ martin│cirujano
01│3523525│dario│dentista
02│4234234│ruben│cirujano

Estoy trabajando en una consulta que me ordene el siguiente resultado:

Código:

Nombre_hospital│especialidad│numero_especialistas
San martin│medico│1
San martin│dentista│1
San pedro│cirujano│2

Para ello realice el siguiente script y no funciona probe arreglar de una u otra forma y no se como, gracias por vuestras sugerencias.
Código SQL [-]
select DISTINCT nombre,count(especialidad) from hospitales inner join medicos on hospitales.cod_hospital = medicos.cod_hospital group by hospitales.nombre

AgustinOrtu 26-10-2015 03:54:04

Que es lo que no funciona? Da error o el resultado no es el esperado?

Por que haces un GROUP BY en un campo de texto y no en un campo numerico? Yo haria el group by cod_hospital

fjcg02 26-10-2015 09:40:23

Hola,

que yo sepa no se puede poner distinct cuando agrupas. Además te tendría que dar error porque en campo nombre no sabe de qué tabla cogerlo. Deberás especificar la tabla.
Quieres que la consulta te saque tres campos y sólo indicas dos.

Por otro lado, yo haría el from de la tabla de medicos, no de la de hospitales.

En resumidas cuentas.
Código SQL [-]
select H.nombre, M.especialidad, M.count(1) as total 
from medicos M inner join hospital H on (H.cod_hospital = M.cod_hospital)
group by H.nombre

y la recomendación de estudiar un buen manual de SQL básico.

Un saludo

ciskokkid 26-10-2015 21:29:23

problema con consulta
 
bueno, esa consulta esta muy sencilla, yo tambien te recomiendo estudiar un poco de sql,
esta consulta te da los resultados tal como los necesitas


Código SQL [-]

select hospital.nombre, medicos.especialidad,count(especialidad) as numero_especialistas
from hospital
join medicos on medicos.cod_hospital=hospital.cod_hospital
group by hospital.nombre, medicos.especialidad
order by count(especialidad)


La franja horaria es GMT +2. Ahora son las 08:55:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi