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

Unir tablas en sql 2005

Estas en el tema de Unir tablas en sql 2005 en el foro de Mysql en Foros del Web. quiero unir dos tablas en una tengo los campos Tabla 1 resumen No pol nombre importe tot 1 diario 100 2 egresos 50 3 ingresos ...
  #1 (permalink)  
Antiguo 19/02/2011, 20:46
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Unir tablas en sql 2005

quiero unir dos tablas en una tengo los campos
Tabla 1 resumen
No pol nombre importe tot
1 diario 100
2 egresos 50
3 ingresos 200
4 proveedore 300

en la segunda detalle
Tabla 2 detalle
No pol importe status aplicada
1 50 10 si
1 20 10 si
1 30 10 si
2 20 0 no
2 30 0 no
3 50 10 si
3 50 10 si
3 50 10 si
3 50 10 si
4 200 0 no
4 100 0 no

lo que quiero obtener es una nueva tabla pero solo con 2 tablos de la del detalle
TABLA A OBTENER
No pol nombre importe tot status aplicada
1 diario 100 10 si
2 egresos 50 0 no
3 ingresos 200 10 si
4 proveedore 300 0 no

al hacer el query
select i.no.pol, i.nombre, i.importe,i.tot,r.status,r.aplicada
from tabla1 i, tabla2 r
where i.No pol = r.No pol
orderby i.nombre

me pone muchos registros 1, 2, 3, etc
  #2 (permalink)  
Antiguo 20/02/2011, 07:16
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: Unir tablas en sql 2005

Bueno, te pone muchos registros porque la relación entre la primera y la segunda tablas es 1:N, lo que significa que por cada instancia de la primera hay una o más de la segunda. Un JOIN te devuelve el conjunto de coincidencias, por loo que te devuelve un registro por cada coincidencia.
Eso no sólo es normal, sino que exactamente lo que pide tu sentencia.
Ahora bien, si lo que deseas es la sumatoria de uno de esos valores, o alguna operación de agregación, debes hacer un GROUP BY utilizando las funciones de agregación sobre los campos a procesar y el agrupamiento sobre los que se hace la distinción.
Pero si lo que quieres es el listado de la segunda tabla para mostrarlo en una pantalla o formulario, entonces lo que tienes que hacer es manejar eso en la programación de la aplciación, no en la consulta.
__________________
¿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 20/02/2011, 11:10
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Unir tablas en sql 2005

Gracias x tu respuesta pero en realidad lo que quiero es solo que en la consulta me muestre los datos de la tabla 1 y de la tabla 2 solo el campo status y tipo de poliza solo que es ahi donde ya no se como hacerle para que no me ponga todos los registros de la tabla 2 agradecere el apoyo que me puedas brindar
  #4 (permalink)  
Antiguo 20/02/2011, 11:37
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: Unir tablas en sql 2005

Postea más claramente la estructura de la tabla y la consulta que usaste, para poder darte una sentencia bien escrita.
Necesitamos los verdaderos nombres de las columnas y ver claramente la relación entre ambas tablas. Tal y como has transcripto el ejemplo no se puede ver bien a qué columna corresponde qué valor y cómo son exactamente los nombres de las columnas.
__________________
¿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 20/02/2011, 15:01
 
Fecha de Ingreso: febrero-2011
Mensajes: 3
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Unir tablas en sql 2005

Hola lo que quiero es unir 2 tablas la tabla1 tiene el resumen de los datos y la tabla 2 el detalle de la tabla2 requiero los campos status y aplicada

Tabla 1 resumen
No pol Nombre Imp_tot
1 Diario 100
2 Egresos 50

Tabla 2 detalle
No pol Importe Status Aplicada
1 50 10 si
1 20 10 si
1 30 10 si
2 20 00 no
2 30 00 no

lo que quiero obtener como resultado es:

TABLA A OBTENER
No pol Nombre Imp_tot Status Aplicada
1 Diario 100 10 si
2 Egresos 50 00 no

no requiero ninguna operacion solo unir estos datos
Espero haber sido mas clara y me puedas ayudar de antemano gracias
  #6 (permalink)  
Antiguo 20/02/2011, 15:29
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: Unir tablas en sql 2005

Cita:
no requiero ninguna operacion solo unir estos datos
Debes entender que "unir" esos datos se hace con alguna "operación", en tu caso una suma con agrupamiento...
Por favor, trata de estudiar un poco de SQL (sin pretender ofender), especialmente los JOIN y las funciones de agrupamiento, porque la pregunta es un poquitín de manual básico:
Código MySQL:
Ver original
  1. SELECT `No Pol`, Nombre, SUM(Imp_Tot) Imp_Tot, `Status`, Aplicada
  2. FROM resumen R INNER JOIN detalle D ON R.`No Pol` = D.`No Pol`
  3. GROUP BY R.`No Pol`
  4. ORDER BY R.`No Pol`

Nota: Cuando se te pide la "estructura de la tabla", nos estamos refiriendo a la sentencia de creación de la misma, es decir "CREATE TABLE resumen(...", ya que hay mucha información que suelen omitir y que podemos comprender mejor cuando la posteas. Si te fijas, es lo que más habitualmente se suele pedir, y la mayoría de los foristas postean sin necesidad de rescordárselo... por algo será.

__________________
¿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: sql, tablas, unir
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 02:47.