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

select join que traiga una sola fila

Estas en el tema de select join que traiga una sola fila en el foro de Mysql en Foros del Web. Buenas y santas. El tema es el siguiente, tengo una tabla transacciones transacciones ->id ->monto y una tabla de reportes que tiene avisos de los ...
  #1 (permalink)  
Antiguo 14/12/2012, 08:12
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 14 años, 10 meses
Puntos: 0
select join que traiga una sola fila

Buenas y santas.
El tema es el siguiente, tengo una tabla transacciones
transacciones ->id
->monto

y una tabla de reportes que tiene avisos de los ultimos movimientos ocurridos en la transaccion

reportes->id
->id_transaccion
->fecha
->estado

Si yo hago
Código MySQL:
Ver original
  1. FROM transacciones INNER JOIN reportes ON reportes.id_transaccion = trans_dm.id
obviamente me trae todos los resultados segun la cantidad de reportes que tenga dicha transaccion.

Necesitaria un poquito de ayuda de esta hermosa comunidad

Muchas gracias.

Última edición por gnzsoloyo; 14/12/2012 a las 08:42 Razón: Código SQL mal etiquetado
  #2 (permalink)  
Antiguo 14/12/2012, 08:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: select join que traiga una sola fila

La pregunta es qué es lo que buscas en el conjunto que te devuelve.
Es decir, si quieres una única fila, ¿es al azar o es una fila determinada?
Si es una fila determinada, debes entonces saber qué datos de esa fila la identifican unívocamente, y los pones en el WHERE, como cualquier otra consulta.
Si es al azar, la ordenas al azar y le indicas el LIMIT 1...
¿Cuál es entonces?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/12/2012, 08:56
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: select join que traiga una sola fila

Hola gnzsoloyo.
Lo que busco es la fila donde estan los datos de la transaccion junto a los datos del ultimo reporte que tenga de esa transaccion.
Ej:
Tengo esta transaccion
id: 1
monto: 120

Y tengo estos reportes de la transaccion
id:1
id_transaccion:1
fecha:10/12/12
estado:Pendiente de pago

id:2
id_transaccion:1
fecha:11/12/12
estado:Pendiente de pago

id:3
id_transaccion:1
fecha:12/11/12
estado:Cancelado

Yo lo que necesitaria seria que al hacer un select tal que me traiga en una sola fila, el dato de la transaccion junto al dato del ultimo reporte de la misma.
Si yo hiciese:
Código MySQL:
Ver original
  1.     FROM transacciones
  2.     INNER JOIN reportes ON reportes.id_transaccion = trans_dm.id                                          
  3.     WHERE transacciones.id = 1
Me traerie 3 filas por la cantidad de reportes que tiene la misma.

Última edición por gnzsoloyo; 14/12/2012 a las 09:16 Razón: Etiqeutado incorrecto.
  #4 (permalink)  
Antiguo 14/12/2012, 09:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: select join que traiga una sola fila

Pues es entonces bastante simple:
Código MySQL:
Ver original
  1. SELECT MAX(R.id) id, T.id, MAX(R.fecha) fecha, R.estado
  2. FROM transacciones T INNER JOIN reportes R ON R.id_transaccion = T.id
  3. WHERE T.id = 1
  4. GROUP BY  T.id

Postdata: Por favor, etiqueta correctamente los códigos. El Highlight en este foro es SQL o MySQL, no CODE.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 14/12/2012, 10:25
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: select join que traiga una sola fila

Hola de nuevo, estoy probando y no sale bien.
Me trae la fecha maxima de los reportes pero los otros datos los trae del primer id.
O sea , si hago
Código SQL:
Ver original
  1. SELECT MAX(R.id) idR, T.id, MAX(R.fecha) fecha, R.estado
  2.     FROM transacciones T INNER JOIN reportes R ON R.id_transaccion = T.id
  3.     WHERE T.id = 1
  4.     GROUP BY  T.id
Me devuelve:
idR:3
T.id:1
fecha:11/12/12
estado:Pendiente de pago.

O sea, se me cruzan los datos por una razon que ignoro totalmente.
  #6 (permalink)  
Antiguo 14/12/2012, 10:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: select join que traiga una sola fila

Trata de hacer más pruebas, usa la imaginación, dedúcelo.
Código MySQL:
Ver original
  1. SELECT R.id, T.id, R.fecha, R.estado
  2. FROM transacciones T INNER JOIN reportes R ON R.id_transaccion = T.id
  3. WHERE T.id = 1
  4. ORDER BY R.fecha DESC
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: fila, join, resultados, select, tabla
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 17:40.