Просмотрите по нескольким таблицам, содержащим те же столбцы

@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

Надеюсь, это поможет.

11
задан SeyedPooya Soofbaf 25 April 2014 в 06:52
поделиться

7 ответов

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

Что-то как следующее должно работать, но мой SQL ржав:

(CREATE VIEW view_name AS
(SELECT * FROM table1
UNION
SELECT * FROM table2
UNION
SELECT * FROM table3));
17
ответ дан 3 December 2019 в 01:04
поделиться

Может стоить отметить, что Вы, возможно, должны были бы использовать "объединение все" для сохранения уникальных строк, которые могут существовать в больше чем одной из таблиц. Стандартное объединение удалит дубликаты.

13
ответ дан 3 December 2019 в 01:04
поделиться

Трудно сказать от Вашего запроса, ожидаете ли Вы, что данные будут возвращены на основе ОБЪЕДИНЕНИЯ, или как представление, содержащее столбцы дискретно. Это, очевидно, имеет эффект.

Рассмотрите следующий образец:

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
9
ответ дан 3 December 2019 в 01:04
поделиться

Используйте объединение. Вот объяснение

2
ответ дан 3 December 2019 в 01:04
поделиться

Используйте оператор объединения

select * from table1
union 
select * from table2
union
select * from table3
2
ответ дан 3 December 2019 в 01:04
поделиться

Вы можете, если бы Вы объединение их (я предложил бы включая некоторый индикатор, относительно которой таблицы каждая запись прибыла из):

select   table1.column1, 1 as TableNumber
from     table1

union

select   table2.column1, 2 as TableNumber
from     table2

.. etc ..
2
ответ дан 3 December 2019 в 01:04
поделиться

Вместо ОБЪЕДИНЕНИЯ, используйте ОБЪЕДИНЕНИЕ ВСЕ, если Вы конкретно не хотите, чтобы дублирующиеся строки были исключены. ОБЪЕДИНЕНИЕ самостоятельно занимает больше времени для выполнения (из-за вида, который оно делает для нахождения простофиль), и удаляет дублирующиеся строки.

2
ответ дан 3 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: