Расширенный SQL-запрос - PullRequest
0 голосов
/ 11 мая 2011

У меня есть таблицы в моей базе данных:

table1
column1|column2|column5|column13
harry   marry   stan    kyle

table2
column1|column2|column12|column7
kenny   eric    randy    ike

Как видите, в каждой таблице есть два столбца с одинаковым именем и два с другим именем, я хотел бы объединить их вво-первых, вот результат, который я хочу получить

column1|column2|column5|column13|column12|column7
harry   marry   stan    kyle     null     null
kenny   eric    null    null     randy    ike

или

column1|column2|column5|column12|column13|column7
harry   marry   stan    null     kyle     null
kenny   eric    null    randy    null     ike

Возможно ли это?и как?Я пробовал что-то вроде:

(select t1.column1 from table1 t1 union select t2.column1 from table t2)

Но я застрял ..

Ответы [ 5 ]

6 голосов
/ 11 мая 2011

Вы должны быть в состоянии сделать

SELECT t1.column1, 
       t1.column2, 
       t1.column5, 
       null column12, 
       t1.column13, 
       null column7
  FROM table1 t1
UNION ALL
SELECT t2.column1, 
       t2.column2, 
       null column5, 
       t2.column12, 
       null column13, 
       t2.column7
  FROM table2 t2

Если важен тип данных (особенно длина), вам может потребоваться CAST(null as VARCHAR2(100)), а не просто выбирать NULL в первом запросе.

2 голосов
/ 11 мая 2011
select
column1 as column1, 
column2 as column2, 
column5 as column5, 
column13 as column13, 
null as column12, 
null as column7
from T1
union 
select
column1 as column1, 
column2 as column2, 
null as column5, 
null as column13, 
column12 as column12, 
column7 as column7
from t2
2 голосов
/ 11 мая 2011

Проверьте этот предыдущий вопрос.Похоже, вы хотите выполнить FULL OUTER JOIN, несмотря на тот факт, что MySQL не поддерживает это напрямую.Хотя есть способ достичь этого.

Полное внешнее объединение в MySQL

0 голосов
/ 11 мая 2011

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

select t1.c1, t1.c2, t1.c3, t1.c4, '' ,'' from t1
union
select t2.c1, t2.c2, '','' , t2.c7, t2.c8 from t2

это работа?

0 голосов
/ 11 мая 2011

это выглядит как простой союз.но я не понимаю, что вы пытаетесь сделать.

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

Select table1.column1,table1.column2,column5,column13,column12,column7
from 
( Select column1,column2,column5,column13,column12,column7 
from table1
left join table2 on table1.column1 = table2.column1

)
union
(
Select table1.column1,table1.column2,column5,column13,column12,column7
from table2
left join table1 on table1.column1 = table2.column1
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...