@DoubleDecker Привет, в твоей строке кода у тебя есть a='"\t"'
. Если вы сделаете a
или a="\t"
или a='\t'
, тогда ваш код будет работать нормально. Написание a='"\t"'
не совпадает с двумя выше.
>>> a = '"\t"'
>>> a
'"\t"'
>>> b = "\t"
>>> b
"\t"
>>> c = '\t'
>>> c
'\t'
>>> a == b
False
>>> a == c
False
Надеюсь, это поможет.
Предполагая, что в дополнение к наличию тех же имен столбцов, столбцы того же содержат те же данные, Вы хотите создать представление, которое является объединением всех тех таблиц.
Что-то как следующее должно работать, но мой SQL ржав:
(CREATE VIEW view_name AS
(SELECT * FROM table1
UNION
SELECT * FROM table2
UNION
SELECT * FROM table3));
Может стоить отметить, что Вы, возможно, должны были бы использовать "объединение все" для сохранения уникальных строк, которые могут существовать в больше чем одной из таблиц. Стандартное объединение удалит дубликаты.
Трудно сказать от Вашего запроса, ожидаете ли Вы, что данные будут возвращены на основе ОБЪЕДИНЕНИЯ, или как представление, содержащее столбцы дискретно. Это, очевидно, имеет эффект.
Рассмотрите следующий образец:
TableA
ID Name RelatedID
1 John 2
2 Paul 1
TableB
ID Name RelatedID
1 Ringo 1
2 George 1
TableC
ID Name RelatedID
1 Bob 1
TableD
ID Name RelatedID
1 Kate NULL
Теперь, выполните следующий запрос против этого:
ВЫБЕРИТЕ идентификатор, имя ОТ ОБЪЕДИНЕНИЯ TableA ВЕСЬ ИЗБРАННЫЙ идентификатор, имя ОТ ОБЪЕДИНЕНИЯ TableB ВЕСЬ ИЗБРАННЫЙ идентификатор, имя ОТ ОБЪЕДИНЕНИЯ TableC ВЕСЬ ИЗБРАННЫЙ идентификатор, имя ОТ TableD
Это приводит к следующему выводу:
1 John
2 Paul
1 Ringo
2 George
1 Bob
1 Kate
Это то, что Вы после? Если так, Вы используете Запрос на объединение.
Теперь, если эффект, который Вы после, состоит в том, чтобы иметь дискретное представление связанных данных, Вы, возможно, должны сделать что-то вроде этого:
SELECT A.ID MasterID, A.Name MasterName,
B.ID BandID, B.Name BandName,
C.ID BlackadderID, C.Name BlackadderName
D.ID BlackadderRealID, D.Name BlackadderRealName
FROM
TableA A
INNER JOIN
TableB B
ON
A.RelatedID = B.ID
INNER JOIN
TableC C
ON
B.RelatedID = C.ID
INNER JOIN
TableD D
ON
C.RelatedID = D.ID
Это приведет к следующему представлению данных:
MasterID MasterName BandID BandName BlackAdderID BlackAdderName BlackadderRealID BlackadderRealName
1 John 2 George 1 Bob 1 Kate
2 Paul 1 Ringo 1 Bob 1 Kate
Используйте оператор объединения
select * from table1
union
select * from table2
union
select * from table3
Вы можете, если бы Вы объединение их (я предложил бы включая некоторый индикатор, относительно которой таблицы каждая запись прибыла из):
select table1.column1, 1 as TableNumber
from table1
union
select table2.column1, 2 as TableNumber
from table2
.. etc ..
Вместо ОБЪЕДИНЕНИЯ, используйте ОБЪЕДИНЕНИЕ ВСЕ, если Вы конкретно не хотите, чтобы дублирующиеся строки были исключены. ОБЪЕДИНЕНИЕ самостоятельно занимает больше времени для выполнения (из-за вида, который оно делает для нахождения простофиль), и удаляет дублирующиеся строки.