SQL - Problemas en Cosnulta a dos Tablas MYSQL

 
Vista:

Problemas en Cosnulta a dos Tablas MYSQL

Publicado por Manuel (1 intervención) el 24/05/2011 00:44:05
Hola a todos, estoy tratando de que Retorne Todos los Datos de la tabla tb_rpto_ot y tb_mobra_ot en donde el valor del campo ot sea igual.

1
Select *  From tb_rpto as a Inner Join tb_mobra as e ON a.ot = e.ot  Where a.ot =1000


El problema es que si en la tb_rpto tiene 1 dato asociado al ot y la tb_mobra tiene 4 datos asociados a la ot, me repite el dato de tb_rpto tantos datos tenga la tb_mobra.

y lo que necesito es mostrar en un data-report los item de la tb_mobra y tb_rpto

Uff.no se si se entencio.pero eso es
Saludos.
Manuel.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Problemas en Cosnulta a dos Tablas MYSQL

Publicado por Leonardo Josué (1173 intervenciones) el 24/05/2011 16:34:23
Hola manuel. No estoy seguro de haber entendido tu problema, pero creo que es más o menos así.

Tus tablas tienen una relación 1 a n, es decir, un elemento de la tabla tb_rpto puede estar asociado a n elementos de la tabla tb_mobra, de tal manera que tienes más o menos lo siguiente:

1
2
3
4
5
6
TABLA TB_RPTO
ot          descripcion
----------- ---------------
1           UNO
2           DOS
3           TRES


1
2
3
4
5
6
7
8
9
TABLA TB_MOBRA
id          ot          descripcion
----------- ----------- ---------------
10          1           1.1
20          1           1.2
30          1           1.3
10          2           2.1
20          2           2.2
30          3           3.1


Con la manera en que estás haciendo las uniones entre las tablas te regresaría algo como esto:

1
2
3
4
5
6
7
8
ot          descripcion     id          ot          descripcion
----------- --------------- ----------- ----------- ---------------
1           UNO             10          1           1.1
1           UNO             20          1           1.2
1           UNO             30          1           1.3
2           DOS             10          2           2.1
2           DOS             20          2           2.2
3           TRES            30          3           3.1


es decir, de repite el dato de la tabla TB_RPTO. Si no quieres que te repita el dato, tienes que cambiar tu consulta y utilizar UNION's en lugar de INNER JOIN, sería algo más o menos así:

1
2
3
4
select 1 nivel, ot, descripcion from TB_RPTO
union
select 2 nivel, ot, descripcion from TB_MOBRA
order by ot, nivel, descripcion


con esto el resultado sería el siguiente

1
2
3
4
5
6
7
8
9
10
11
nivel       ot          descripcion
----------- ----------- ---------------
1           1           UNO
2           1           1.1
2           1           1.2
2           1           1.3
1           2           DOS
2           2           2.1
2           2           2.2
1           3           TRES
2           3           3.1


es decir, te muestra cada registro de la tabla TB_RPTO y enseguida todos los registros asociados de la tabla TB_MOBRA. Dale un vistazo a ver si esto es lo que necesitas, si no es así, trata de explicar un poco mejor tu problema, poniendo algunos datos de ejemplo como lo hice yo y poniendo también la estructura de tus tablas.

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas en Cosnulta a dos Tablas MYSQL

Publicado por Manuel (1 intervención) el 01/06/2011 23:25:50
Hola Leo y Gracias,
En la tb_rptos puedo tener Varios Campos asociados a un campo(ot), y en tb_mobra es el Mismo caso.
Seria Algo Asi
1
2
3
4
5
id_rpto      cant       ot           det_rpto             valor
1                 1           10          Ampolleta            1500
2                 1           10          Foco del             10000
3                 1           10          Cables                 5000
4                 1             9           Ampolleta           1500


1
2
3
4
5
id_mobra ot           det_mobra                     valor
1                10          Cambio Foco                1000
2                  9          Cambio Ampolleta       1000
3                  9          Cables                              500
4                  9           Soquete                           500


La Idea es que al enviar al DataReport los Envie Asi.
1
2
3
4
5
6
7
Orden Nº 10
Detalle de Mano de Obra                           Detalle de Repuestos
         DETALLE                    VALOR         CANT  DETALLE      VALOR
1.-  Cambio Foco                1000        [       1      Ampolleta          1500
                                                                 [       1      Foco deñ         10000
                                                                 [       1      Cables               5000
                                                                 [


Probe lo que me dices y no logro, ahora estoy tratando de apreder a trabajar con Crystal Report 8 para ver si puedo lograrlo, pero te agredeceria tu ayuda mucho--
Saludos
Manuel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar