Как выбрать две отдельные непересекающиеся таблицы в MySQL - PullRequest
1 голос
/ 06 июля 2010

Я ищу запрос для выбора строк из двух разных таблиц, , сохраняя имена столбцов одинаковыми (Я нашел здесь один результат для выбора из двух разных таблиц, но он объединил имена столбцов иметь более простой запрос). Мне нужно сохранить исходные имена столбцов, но в новой, более крупной таблице есть две разные таблицы. Между двумя таблицами нет перекрывающихся столбцов.

Картинка, для визуализации:

alt text

Итак, как я могу это сделать? Я знаю, что запрос, вероятно, будет довольно запутанным, но что-то наполовину приличное, вероятно, будет лучше, чем моя текущая попытка:

SELECT t1.* , t2.*
FROM table1 t1 RIGHT OUTER JOIN table2 t2
ON r.someColumn1 = rc.someColumn2
UNION
SELECT t1.* , t2.*
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON r.someColumn1 = rc.someColumn2

Это работает, но только до тех пор, пока не будет случаев, когда someColumn1 = someColumn2 - что может случиться довольно легко, конечно.

Любая помощь приветствуется, и я прошу прощения за, вероятно, очень глупый вопрос, на который умный ответ звучит так: «Не делай этого, дурак!».

Ответы [ 2 ]

6 голосов
/ 06 июля 2010

Вы можете установить критерий соединения, который никогда не будет совпадать:

SELECT t1.* , t2.*
FROM table1 t1 RIGHT OUTER JOIN table2 t2
ON 1 = 0
UNION
SELECT t1.* , t2.*
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON 1 = 0

У меня нет MySQL для тестирования, но он работает в SQL Server.

3 голосов
/ 06 июля 2010

Редактировать: мой первый ответ был неправильным:

select * from Events
  left join GroupList on ID=null
union 
select Events.*,GroupList.* from GroupList 
  left join Events on GID=null

В приведенном выше GID и ID являются ключевые поля в таблицах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...