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

problemas con una consulta a tablas

Estas en el tema de problemas con una consulta a tablas en el foro de SQL Server en Foros del Web. Hola chicos, nuevamente ando por aqui tratando de resolver una duda... lo que me sucede es lo siguiente, yo tengo una base de datos la ...
  #1 (permalink)  
Antiguo 17/08/2011, 08:31
 
Fecha de Ingreso: agosto-2006
Mensajes: 56
Antigüedad: 17 años, 8 meses
Puntos: 0
Información problemas con una consulta a tablas

Hola chicos, nuevamente ando por aqui tratando de resolver una duda... lo que me sucede es lo siguiente, yo tengo una base de datos la cual tiene unos registros y cuando realizo una consulta para que me muestre cierta información me repite los registros varias veces, les muestro mi consulta************************************************** ***************
$sql="select facPreli.preCodCon,facPreli.preCodEst,facPreli.pre Valor,nucEstu.estPriNom,nucEstu.estSegNom,nucEstu. estPriApe,
nucEstu.estSegApe,facConcep.conDescrip,facPreli.pr ePerCau from facPreli,facConcep,nucEstu where facPreli.preCodEst=nucEstu.estCod and
facPreli.preCodCon=facConcep.conCodigo order by facPreli.preCodEst";
************************************************** ***************
el resultado que me arroja es el sgt:
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++
codigo valor P nomb S nom P apellido sApelli concepto periodo
20000818 950000 CAMILO ANDRES ESPINOSA BERNAL Pension Mayo-2011
20000818 950000 CAMILO ANDRES ESPINOSA BERNAL Pension Mayo-2011
20000818 950000 CAMILO ANDRES ESPINOSA BERNAL Pension Mayo-2011
20000818 950000 CAMILO ANDRES ESPINOSA BERNAL Pension Mayo-2011
20000818 950000 CAMILO ANDRES ESPINOSA BERNAL Pension Mayo-2011

20000836 950000 OSCAR IVAN MEDINA RAMIREZ Pension Mayo-2011
20000836 950000 OSCAR IVAN MEDINA RAMIREZ Pension Mayo-2011
20000836 950000 OSCAR IVAN MEDINA RAMIREZ Pension Mayo-2011
20000836 950000 OSCAR IVAN MEDINA RAMIREZ Pension Mayo-2011
20000836 950000 OSCAR IVAN MEDINA RAMIREZ Pension Mayo-2011
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++
y en la base de datos solo aparece
////////////////////////////////////////////////////////////////////////////////////////////////////////
codigo valor P nomb S nom P apellido sApelli concepto periodo
20000818 950000 CAMILO ANDRES ESPINOSA BERNAL Pension Mayo-2011
20000836 950000 OSCAR IVAN MEDINA RAMIREZ Pension Mayo-2011
////////////////////////////////////////////////////////////////////////////////////////////////////////
el cual es un registro por codigo y concepto, osea se puede dar el caso que un estudiante tenga varios conceptos o el mismo concepto pero en periodos diferente&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&
20032042 1000000 MATEO RODRIGUEZ DEL VALLE Pension Mayo-2011
20032042 500000 MATEO RODRIGUEZ DEL VALLE otros Mayo-2011
20032042 1050000 MATEO RODRIGUEZ DEL VALLE Pension Enero-2011
  #2 (permalink)  
Antiguo 17/08/2011, 09:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: problemas con una consulta a tablas

Al momento de hacer tus joins estas trayendo informacion repetida esto es por ejemplo en la tabla 1 tienes:

id nombre
1 juan
2 Pedro
3 Luis

Y en la 2 tienes

Ventas
id_venta id_vendedor
1 1
2 1
3 2
4 2

Al hacer un select de este tipo

select nombre from tabla1, tabla2 where tabla1.id=tabla2.id_vendedor

el resultado seria

juan
juan
pedro
pedro

Lo que tienes que haces es un group by por tus campos a mostrar lo otro que te recomiendo es que uses la clausula join ya sea join normal o left join algo asi

select nombre from tabla1
inner join tabla 2 on (tabla1.id=tabl2.id_vendedor)
group by nombre

esto re regresaria

nombre
juan
pedro

:)

Espero haberme explicado jejejej :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 17/08/2011, 12:27
 
Fecha de Ingreso: agosto-2006
Mensajes: 56
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: problemas con una consulta a tablas

seria algo asi:
ELECT facPreli.preCodCon, facPreli.preCodEst, facPreli.preValor, nucEstu.estPriNom, nucEstu.estSegNom, nucEstu.estPriApe, nucEstu.estSegApe, facConcep.conDescrip,
facPreli.prePerCau
FROM facPreli INNER JOIN
nucEstu ON facPreli.preCodEst = nucEstu.estCod INNER JOIN
facConcep ON facPreli.preCodCon = facConcep.conCodigo
ORDER BY facPreli.preCodEst



pero esa consulta me arroja los mismos resultados mencionados arriba
cuando cambio order por group me sale error de ejecucion de sql server
  #4 (permalink)  
Antiguo 17/08/2011, 13:36
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: problemas con una consulta a tablas

Hola sheccid65:

¿Cómo estás poniendo tu GROUP BY? ¿qué error es el que te está marcando? Casi podría asegurar que tiene que ver con algún campo que no está listado en el GROUP BY. Si leíste a detalle el comentario de Libras, hay una parte que dice:

Cita:
Lo que tienes que haces es un group by por tus campos a mostrar
Es decir, todos los campos que intervengan en el SELECT y que no estén asociados a una función de Agregación (count, sum, max, min, avg, etc.) DEBEN APARECER TAMBIÉN EN EL GROUP BY, es decir, tu consulta debería quedar más o menos así:

Código:
SELECT facPreli.preCodCon, facPreli.preCodEst, facPreli.preValor, 
nucEstu.estPriNom, nucEstu.estSegNom, 
nucEstu.estPriApe, nucEstu.estSegApe, 
facConcep.conDescrip, facPreli.prePerCau
FROM facPreli INNER JOIN
nucEstu ON facPreli.preCodEst = nucEstu.estCod INNER JOIN
facConcep ON facPreli.preCodCon = facConcep.conCodigo
GROUP BY facPreli.preCodCon, facPreli.preCodEst, facPreli.preValor, 
nucEstu.estPriNom, nucEstu.estSegNom, 
nucEstu.estPriApe, nucEstu.estSegApe, 
facConcep.conDescrip, facPreli.prePerCau
ORDER BY facPreli.preCodEst
Ahora bien, esta solución podría servir, pero también deberías de revisar si no te falta considerar algún campo para hacer tus uniones, es decir, que tus tablas estén relacionadas por otro campo además del preCodCon. Por el comportamiento de tus datos tal pareciera que se está realizando un producto cartesiano entre tus tablas.

Saludos
Leo.
  #5 (permalink)  
Antiguo 17/08/2011, 14:11
 
Fecha de Ingreso: agosto-2006
Mensajes: 56
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: problemas con una consulta a tablas

gracias libras, ya me sale la consulta como la queria :apla uso:

Etiquetas: registros, select, sql, tablas
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 07:22.