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

Select,tablas relacionales, problema en mi consulta

Estas en el tema de Select,tablas relacionales, problema en mi consulta en el foro de SQL Server en Foros del Web. el clasico ejemplo, se mes estan duplicando mis datos ,, por ejemplo .. yo lo q quisiera es q si tengo creditos .. solo se ...
  #1 (permalink)  
Antiguo 29/03/2010, 21:49
 
Fecha de Ingreso: mayo-2009
Mensajes: 46
Antigüedad: 15 años
Puntos: 0
Pregunta Select,tablas relacionales, problema en mi consulta

el clasico ejemplo, se mes estan duplicando mis datos ,, por ejemplo ..

yo lo q quisiera es q si tengo creditos.. solo se muestre la informacion de a quien pertenece ese credito y si las personas tienen 2 creditos pues q muestre ambos .. y aparte los creditos estan osociados a movimientos, de los cuales quiero obtener un dato..

Tablas:

Creditos:
------------
id
id_user
periodo
interes
rec_fin

movimientos:
---------------
id
id_credito
saldo


lo q yo tengo es esto

Código MySQL:
Ver original
  1. SELECT c.id, c.rec_fin, c.periodo, m.saldo
  2. FROM movimiento m, credito c
  3. WHERE  c.id = m.id_credito
  4. AND c.id_user = 96
  5. ORDER BY f_oper


digamos.. q tengo estos datos

credito
1 96 diciembre 8 10000
2 15 enero 8 1000
3 96 enero 4 1000

y de movimientos tengo:
1 2 100
2 2 300
3 3 100
4 3 100

pues con mi consulta se me duplican todos los movimientos

y yo solo quiero q me salga

1 96 diciembre 8 10000 300
3 96 enero 4 1000 100

y me salen en realidad duplicados los valores en base a la cantidad de movimientos q tengo
  #2 (permalink)  
Antiguo 30/03/2010, 03:38
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Respuesta: Select,tablas relacionales, problema en mi consulta

Utiliza JOIN siempre:

Código SQL:
Ver original
  1. SELECT c.id, c.rec_fin, c.periodo, m.saldo
  2. FROM movimiento m
  3. JOIN credito c ON c.id = m.id_credito
  4. WHERE  c.id_user = 96
  5. ORDER BY c.periodo

Si quieres saber todo sobre JOIN y sus formas: http://es.wikipedia.org/wiki/Join

Un saludo
  #3 (permalink)  
Antiguo 30/03/2010, 19:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 46
Antigüedad: 15 años
Puntos: 0
Respuesta: Select,tablas relacionales, problema en mi consulta

bueno de hecho al usar el join me sale exactamente el mismo resultado que tenia de q se me repiten los resultados en base a los movimientos. ...
  #4 (permalink)  
Antiguo 31/03/2010, 01:06
Avatar de PosProdukcion  
Fecha de Ingreso: noviembre-2004
Ubicación: Manzanares el Real (Madrid)
Mensajes: 726
Antigüedad: 19 años, 5 meses
Puntos: 9
Respuesta: Select,tablas relacionales, problema en mi consulta

Claro, eso es por que estás selccionando la columna m.saldo, a la fuerza tendrá que sacar un resultado por cada movimiento, si no quieres que se repitan deberías quitarlo de la lista de selección y dejar sólo los de créditos:

Código SQL:
Ver original
  1. SELECT c.id, c.rec_fin, c.periodo
  2. FROM credito C
  3. WHERE  c.id_user = 96
  4. ORDER BY c.periodo

O bien hacer DISTINCT para que no se repitan aquellos con el mismo saldo, aunque sacaría una fila por cada saldo distinto:

Código SQL:
Ver original
  1. SELECT DISTINCT c.id, c.rec_fin, c.periodo, m.saldo
  2. FROM credito c
  3. JOIN movimiento m ON c.id = m.id_credito
  4. WHERE  c.id_user = 96
  5. ORDER BY c.periodo

Etiquetas: Ninguno
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 03:21.