Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/11/2009, 03:20
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 2 meses
Puntos: 574
union de varias tablas

Manual Mysql
Cita:
In MySQL, CROSS JOIN is a syntactic equivalent to INNER JOIN (they can replace each other). In standard SQL, they are not equivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise.

Código sql:
Ver original
  1. SELECT *
  2. FROM A
  3.          CROSS JOIN B
  4.                    ON A.id_A = B.id_B
  5.          CROSS JOIN C
  6.                    ON A.id_A = C.id_C
  7.          CROSS JOIN D
  8.                    ON A.id_A = D.id_D
  9.          CROSS JOIN E
  10.                    ON A.id_A = E.id_E

como puedes leer en el manual CROSS es equivalente a INNER en Mysql

Ahora bien esa query no hace lo que se suele llamar por union de tablas. Esto de da una "union" horizontal por llamarlo de alguna forma.

A.id_A::::A.campo1::::A.campo2:::::B.id_B::::B.cam po1::::B.campo2... etc

es decir los CAMPOS de la taba A seguidos de los de la B etc

los campos de cada tabla puedn ser distintos

Lo que normalmente se llama UNION de tabla se haria como sigue


Select id_A as id, campo1, campo2
From A
UNION ALL
Select id_B as id, campo1, campo2
From B
UNION ALL
Select id_C as id, campo1, campo2
From C
...etc

esto te daria lo siguiente

A.id_A1::::A.campo11::::A.campo21
A.id_A2::::A.campo12::::A.campo22
B.id_B1::::B.campo11::::B.campo21
B.id_B2::::B.campo12::::B.campo22
... etc

es decir los REGISTROS de la tabla A seguidos de los de la B etc
en este caso los campos de las tablas deben coincidir.

Quim