Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Unir dos tablas con Mysql (https://www.clubdelphi.com/foros/showthread.php?t=70254)

albamarin 09-10-2010 19:50:17

Unir dos tablas con Mysql
 
Hola foro ¿que tal?

Necesito unir dos tablas, pero no tienen la misma estructura, hay alguna forma de que lea una y despues la otra sin usar la clausura UNION.

Ejemplo
TABLA A
codigo nombre tipo
1 TONI A
2 PEDRO A
3 JUAN A

TABLA B
codigo nombre tipo
1 CARLOS B
2 PABLO B

El resultado deberia ser

codigo nombre tipo
1 TONI A
2 PEDRO A
3 JUAN A
1 CARLOS B
2 PABLO B

El campo codigo y nombre existen en las dos tablas el resto de campos no, la idea es que me junte los de la tabla a con la b para tener una lista de todos, aunque los codigos se pueden repetir, mediante un tercer campo tipo yo se ha que tabla pertenece.

Un saludo y gracias

rgstuamigo 09-10-2010 19:53:25

Pregunto
 
Cita:

Empezado por albamarin (Mensaje 378893)
Hola foro ¿que tal?

Necesito unir dos tablas, pero no tienen la misma estructura, hay alguna forma de que lea una y despues la otra sin usar la clausura UNION.
...

¿Y por qué no quieres usar la clausula UNION?:confused:
Saludos...:)

albamarin 10-10-2010 18:26:26

No es que no quiera usarla rgstuamigo, Es la primera idea que tuve para desarrollar lo que quiero hacer y las pocas pruebas que he realizado los resultados del sql eran mas lentos que de lo normal, que tambien lo veo logico, por eso preguntaba si conociais alguna otra forma de realizarlo sin tenerla que hacer. De todas maneras planteo lo que quiero hacer por si alguien del foro se le ha presentado un caso similar y ha optado por desarrollarlo de otra manera. Tengo una aplicación que es utilizad por revendedores y tiene tablas globales en las que ha estos se les ofrecen técnicos, productos, servicios, etc, a partir de ahora se ha de desarrollar la aplicación que tienen para que aparte de los productos nuestros ellos puedan llevar en cartera productos, servicios y personal propio, al margen que haya de desarrollar los módulos para que ellos puedan darse de alta todo este tipo de información, a la hora de ellos a sus clientes poder presupuestar, dar como catalogo, ofertar, etc, deberán tener una única lista de todos estos servicios, productos, etc, por ello lo primero que se me ocurrió es crear un sql que uniera la tabla global con la suya propia, mostrando toda la información que puede ofrecer, dependiendo de lo que elija, yo ya se de que tabla lo ha seleccionado en esa unión para poder actuar de una manera o otra. Mas o menos eso es lo que tengo que realizar, claro no soy un experto lo mismo esta mal planteado el análisis, si se os ocurre alguna forma de desarrollarlo mas profesional, me gustaría que lo plantearais como alternativa.
Gracias a todos y un saludo

rgstuamigo 13-10-2010 22:47:44

Pues que :rolleyes: yo sepa, para Unir dos tablas de la manera como lo deseas tú, no te queda más que usar la clausula "Union" o en tal caso "Union All" ;)
Saludos...:)

albamarin 14-10-2010 10:51:17

Vuelvo a darte las gracias por las molestias, pero creo que tienes razon para unirlas debere usar la clausula UNION, otra idea que se me pasa por la cabeza es la de crear una tabla de relacion, que los productos globales que sean utilizados por el revendedor se graben los indices en una tabla y los propios del revendedor vayan los indicen a esta tabla tambien, luego cuando se lea esta tabla de relacion ya recuperara los datos de la tabla maestro que toque, pero no se si es mejor que lo otro, debere mantener la tabla de relaciones y cada ves que haga un alta en una tabla maestra de globales debere actualizar la de relaciones por cada uno de los revendedores que haya, no se si esta otra idea es buena o practica, que opinais vosotros?

rgstuamigo 14-10-2010 21:21:53

Cita:

Empezado por albamarin (Mensaje 379248)
...
otra idea que se me pasa por la cabeza es la de crear una tabla de relacion, que los productos globales que sean utilizados por el revendedor se graben los indices en una tabla y los propios del revendedor vayan los indicen a esta tabla tambien, luego cuando se lea esta tabla de relacion ya recuperara los datos de la tabla maestro que toque, pero no se si es mejor que lo otro, debere mantener la tabla de relaciones y cada ves que haga un alta en una tabla maestra de globales debere actualizar la de relaciones por cada uno de los revendedores que haya, no se si esta otra idea es buena o practica, que opinais vosotros?

Pues a mi parecer lo veo muy burocrático para hacer lo mismo;), si lo que se quiere es mas bien es OPTIMIZAR la consulta y no hacerla más pesada.;).
Digo...¿no?
Saludos...:)

albamarin 15-10-2010 08:02:05

Creo que tienes razon, voy a realizarlo de la primera manera que se me ocurrio, gracias por las aclaraciones y por los consejos.

Un saludo

olbeup 15-10-2010 09:18:48

La solución a tu problema es:
Código SQL [-]
SELECT
    CODIGO
    ,NOMBRE
    ,TIPO
  FROM TABLA_A
UNION
SELECT
    CODIGO
    ,NOMBRE
    ,TIPO
  FROM TABLA_B
  ORDER BY TIPO
Un saludo.


La franja horaria es GMT +2. Ahora son las 03:06:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi