То же количество столбцов для Union Operation

Я перебирал союз и союз, всю логику и пробы на примерах. Что меня озадачило, так это то, почему необходимо иметь одинаковое количество столбцов в обеих таблицах для выполнения операции объединения или объединения всех?

Простите, если мой вопрос глупый, но точного ответа я нигде не нашел. И с концептуальной точки зрения, пока присутствует один общий столбец, объединение двух таблиц должно быть простым, верно? (например, операция соединения). Но это не так, и я хочу знать, почему?


person Sparky    schedule 31.01.2013    source источник
comment
Соединение и объединение - это две разные концепции, объединение объединяет два набора результатов в ОДИН, где объединение объединяет ваши столбцы в один набор результатов.   -  person Vishwanath Dalvi    schedule 31.01.2013


Ответы (5)


Операции JOIN НЕ требуют выбора одинакового количества столбцов в обеих таблицах. UNION операции отличаются тем, что присоединяется. Думайте об этом как о двух отдельных списках данных, которые можно «вставить» вместе в один большой блок. У вас не может быть столбцов, которые не совпадают.

Другой способ взглянуть на это: JOIN делает это:

TableA.Col1, TableA.Col2 .... TableB.Col1, TableB.Col2

СОЮЗ делает это:

TableA.Col1, TableA.Col2
TableB.Col1, TableB.Col2

JOINS добавляет столбцы к строкам, UNIONS добавляет новые строки к существующим строкам. Вот почему они должны «соответствовать».

Мэтт

person mrunion    schedule 31.01.2013
comment
Мэтт (мрунион), Сгеддес и Видхванатан Ийер. У всех троих правильный ответ. Я мог отметить только один, поэтому я использовал FIFO :D. Большое спасибо, ребята, за ваши замечательные ответы. Ты жжешь!! - person Sparky; 31.01.2013
comment
Видите ли, это имело бы смысл, если бы вы использовали целые таблицы. Мне удалось получить объединение между 3 разными таблицами с разным количеством столбцов, когда я использовал объединение для выбора одного столбца для каждой таблицы. Но когда я попытался использовать указанный союз (исходный союз сам по себе возвращал строки) в качестве выбора * из таблицы, где идентификатор не входит в (союз), он вызвал там ошибку. Можете ли вы объяснить, почему это произойдет? - person eragon2262; 10.11.2016

Присоединяйтесь к операции combines columns from two tables.

Где, как Union и Union все combines two results sets, поэтому для объединения двух результатов вам нужно иметь одинаковое количество столбцов с совместимыми типами данных.

В реальном мире, например. Чтобы играть в крикет, вам нужно 11 игроков в обеих командах, 7 в одной команде и 11 в противоположной команде.

person Vishwanath Dalvi    schedule 31.01.2013

Допустим, у вас есть EMPTable со столбцами и значениями, как показано ниже: идентификатор, имя, адрес, зарплата, дата рождения 1, «SAM», «2 Merck Ln», 100000, «18.08.1980».

ЕСЛИ вы хотите ОБЪЕДИНИТЬСЯ только с именем столбца (скажем, значение «TOBY»), это означает, что вы должны по умолчанию установить для других значений значение NULL (умное программное обеспечение или база данных могут неявно сделать это за вас), что по сути означает ниже (для предотвращения целостности реляционной таблицы) ->

1, 'SAM', '2 Merck Ln', 100000, '08/18/1980'
UNION
NULL,'TOBY', NULL, NULL, NULL

«Союз» по определению представляет собой слияние (разных) значений одного и того же класса или типа.

person SACHIN    schedule 24.09.2014

Вам нужно исследовать разницу между UNION и JOIN.

По сути, вы используете UNION, когда хотите получить записи из одного источника (таблица, представление, группа таблиц и т. д.) и объединить эти результаты с записями из другого источника. У них должны быть одни и те же столбцы, чтобы получить общий набор результатов.

Вы используете JOIN, когда хотите соединить записи из одного источника с другим источником. Существует несколько типов JOIN (INNER, LEFT, RIGHT и т. д.) в зависимости от ваших потребностей. При использовании JOIN вы можете указать любые столбцы, которые вам нужны.

Удачи.

person sgeddes    schedule 31.01.2013

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

emp [eid, ename,edob,esal] emp_info [eid,emob_no]

здесь я хочу знать имя и номер мобильного телефона. всех сотрудников, то мы будем использовать концепцию соединения, потому что здесь необходимая нам информация не может быть предоставлена ​​​​одной и той же таблицей.

так что будем пользоваться..

ВЫБЕРИТЕ E.ENAME,EI.EMOB_NO ИЗ EMP E, EMP_INFO EI, ГДЕ E.EID = EI.EID AND LOWER(E.ENAME)='john' ;

теперь рассмотрим ситуацию, когда мы хотим найти сотрудников, у которых есть сберегательный счет и кредитный счет в банке. Здесь мы хотим найти общие кортежи из результатов двух таблиц. для этого мы будем использовать операции над множествами. [ перекресток ]

для множества операций ДОЛЖНЫ БЫТЬ выполнены 2 условия.

  1. такой же нет. атрибутов должны быть извлечены из каждой таблицы.

  2. домен каждого атрибута должен быть таким же или совместимым с более высоким...

person Mayank Tiwari    schedule 31.01.2013