а также:

аюсь сделать одно утверждение, чтобы извлечь данные из 3 связанных таблиц (так как все они имеют общий строковый индекс). У меня возникли проблемы с тем, чтобы MySQL не возвращал продукт из двух таблиц, в результате чего набор результатов стал намного больше, чем мне бы хотелось. Каждая таблица имеет различное количество столбцов, и я предпочел бы не использовать UNION в любом случае, потому что данные в каждой таблице являются отдельными.

Вот пример:

Таблица X является основной таблицей и имеет поля A B.

Таблица Y имеет поля A C D.

Таблица Z имеет поля A E F G.

-

Мой идеальный результат будет иметь вид:

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

и т.д...

-

Вот простейший SQL, который я пробовал, который показывает мою проблему (то есть он возвращает произведение Y * Z, проиндексированное данными из A:

SELECT DISTINCT *

FROM X

LEFT JOIN Y USING (A)

LEFT JOIN Z USING (A)

-

Я попытался добавить предложение group by к полям на Y и Z. Но, если я сгруппировал только по одному столбцу, он возвращает только первый результат, соответствующий каждому уникальному значению в этом столбце (то есть: A1 C1 E1, A1 C2 E1, A1 C3 E1). И если я сгруппирую по двум столбцам, это снова возвращает произведение двух таблиц.

Я также попытался сделать несколько операторов выбора в запросе, а затем соединить полученные таблицы, но я снова получил результат работы таблиц.

По сути, я хочу объединить результаты трех операторов выбора в один результат без предоставления мне всех комбинаций данных. Если мне нужно, я могу сделать несколько запросов. Однако, поскольку все они содержат общий индекс, я считаю, что должен быть способ сделать это в одном запросе, который я пропускаю.

Спасибо за любую помощь.

Ответы на вопрос(5)

Ваш ответ на вопрос