Eliminar duplicados del resultado de múltiples combinaciones en tablas con diferentes columnas en MySQL

Estoy tratando de hacer una declaración para extraer datos de 3 tablas relacionadas (ya que todas comparten un índice de cadena común). Tengo problemas para evitar que MySQL devuelva el producto de dos de las tablas, lo que hace que el conjunto de resultados sea mucho más grande de lo que quiero. Cada tabla tiene un número diferente de columnas, y preferiría no usar UNION de todos modos, porque los datos en cada tabla son separados.

Aquí hay un ejemplo

Table X es la tabla principal y tiene campos A B.

La tabla Y tiene campos A C D.

La tabla Z tiene campos A E F G.

-

Mi resultado ideal tendría la forma:

A1 B1 C1 D1 E1 F1 G1

A1 B2 C2 D2 00 00 00

A2 B3 C3 D3 E2 F2 G2

A2 B4 00 00 E3 F3 G3

etc ...

-

Aquí está el SQL más simple que he probado que muestra mi problema (es decir, devuelve el producto de Y * Z indexado por datos de A:

SELECT DISTINCT *

FROM X

LEFT JOIN Y USING (A)

LEFT JOIN Z USING (A)

-

He intentado agregar un grupo por cláusula a los campos en Y y Z. Pero, si solo agrupo por una columna, solo devuelve el primer resultado que coincide con cada valor único en esa columna (es decir: A1 C1 E1, A1 C2 E1 , A1 C3 E1). Y si agrupo por dos columnas, devuelve el producto de las dos tablas nuevamente.

También intenté hacer varias declaraciones select en la consulta, luego unir las tablas resultantes, pero recibí el producto de las tablas como salida nuevamente.

Básicamente quiero fusionar los resultados de tres declaraciones de selección en un solo resultado, sin que me dé todas las combinaciones de datos. Si lo necesito, puedo recurrir a hacer múltiples consultas. Sin embargo, dado que todos contienen un índice común, creo que debería haber una manera de hacerlo en una consulta que me falta.

Gracias por cualquier ayuda

Respuestas a la pregunta(5)

Su respuesta a la pregunta