а также:
аюсь сделать одно утверждение, чтобы извлечь данные из 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). И если я сгруппирую по двум столбцам, это снова возвращает произведение двух таблиц.
Я также попытался сделать несколько операторов выбора в запросе, а затем соединить полученные таблицы, но я снова получил результат работы таблиц.
По сути, я хочу объединить результаты трех операторов выбора в один результат без предоставления мне всех комбинаций данных. Если мне нужно, я могу сделать несколько запросов. Однако, поскольку все они содержат общий индекс, я считаю, что должен быть способ сделать это в одном запросе, который я пропускаю.
Спасибо за любую помощь.