Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Sql Sentencia (https://www.clubdelphi.com/foros/showthread.php?t=37668)

jalejandro0211 20-11-2006 00:49:47

Ayuda con Sql Sentencia (unir dos select)
 
Hola, tengo la siguiente duda:

en este select


Código SQL [-]
select cedula, count(cedula) as cont from matrix_odontograma group by cedula having cont = 3
retorna:
111111, 3
222222, 3
333333, 3
444444, 3
555555, 5

en este otro:

Código SQL [-]
select matrix_odontograma.cedula as cedula, primer_nombre as nombre, primer_apellido as apellido, genero as genero, fecha_nacimiento as fechanacimiento from matrix_odontograma, pacientes where (matrix_odontograma.cedula = pacientes.cedula) and (iddientes = 1 and superficie = 1 and nombre_enfermedad = 'caries' or iddientes = 2 and superficie = 6 and nombre_enfermedad = 'ppr' or iddientes = 3 and superficie = 6 and nombre_enfermedad = 'extraido' ) group by cedula having count(matrix_odontograma.cedula) between 3 and 3

retorna

666666
333333
555555
222222
777777

necesito un select completo donde uniendo estos 2 anteriores no se si es con join, inner join, subselect, o algo, para q me retorne los valres que se repitieron en ambos selec es decir


222222
333333
555555

(the values that have the first select and second select)

grcias por su ayuda...

Bicho 20-11-2006 01:06:57

Hola jalejandro0211, antetodo, bienvenido al ClubDelphi.
Segundo, leete la Guía de Estilo, por favor.
- No escribas en mayúsculas.
- Usas las etiquetas de código y SQL
- Y pon títulos más descriptivos a los hilos.

Saludos y nuevamente bienvenido a los foros.

Ivanzinho 21-11-2006 11:08:05

Prueba con :
Código SQL [-]
select matrix_odontograma.cedula as cedula, primer_nombre as nombre, primer_apellido as apellido, genero as genero, 
       fecha_nacimiento as fechanacimiento  
from matrix_odontograma, pacientes  
where (matrix_odontograma.cedula = pacientes.cedula) and (iddientes = 1 and superficie = 1 and 
      nombre_enfermedad = 'caries' or iddientes = 2 and superficie = 6 and nombre_enfermedad = 'ppr' or iddientes = 3 and superficie = 6 and nombre_enfermedad = 'extraido' )        
      and matrix_odontograma.cedula in (select cedula, count(cedula) as cont 
                                        from matrix_odontograma                                          
                                        group by cedula having cont = 3)
group by cedula 
having count(matrix_odontograma.cedula) between 3 and 3

jalejandro0211 21-11-2006 13:39:06

Sentencia Correcta
 
Gracias a todos por las respuestas, me funciono con:

You need a simple join:

Código SQL [-]
Select Tbl1.Cedula
From
(SELECT CEDULA, COUNT(CEDULA) AS CONT 
FROM MATRIX_ODONTOGRAMA 
GROUP BY CEDULA HAVING CONT = 3) as Tbl1
Join
(SELECT matrix_odontograma.cedula as Cedula, primer_nombre as Nombre,
primer_apellido as Apellido, genero as Genero, 
fecha_nacimiento as FechaNacimiento 
FROM matrix_odontograma, pacientes 
where (matrix_odontograma.cedula = pacientes.cedula) AND
(idDientes = 1 AND Superficie = 1 AND nombre_enfermedad = 'Caries'
or idDientes = 2 AND Superficie = 6 AND nombre_enfermedad = 'PPR' 
or idDientes = 3 AND Superficie = 6 AND nombre_enfermedad = 'Extraido' ) 
group by cedula 
having count(matrix_odontograma.cedula) between 3 and 3) as tbl2
on tbl1.Cedula = tbl2.Cedula


La franja horaria es GMT +2. Ahora son las 23:45:02.

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