sqlouterjoin

Внешнее соединение между двумя таблицами базы данных

Синтаксис

data = sqlouterjoin(conn,lefttable,righttable)
data = sqlouterjoin(conn,lefttable,righttable,Name,Value)

Описание

пример

data = sqlouterjoin(conn,lefttable,righttable) возвращает таблицу, следующую из внешнего соединения между левыми и правыми таблицами базы данных. Эта функция совпадает со строками с помощью всех разделяемых столбцов или ключей, в обеих таблицах базы данных. Внешнее соединение сохраняет совпадающие и несопоставленные строки между этими двумя таблицами. Выполнение этой функции является эквивалентом записи SQL-оператора SELECT * FROM lefttable,righttable OUTER JOIN lefttable.key = righttable.key.

пример

data = sqlouterjoin(conn,lefttable,righttable,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, 'Keys','productNumber' задает использование столбца productNumber как ключ для присоединения этих двух таблиц базы данных.

Примеры

свернуть все

Используйте связь ODBC, чтобы импортировать данные о продукте от внешнего соединения между двумя таблицами базы данных Microsoft® SQL Server® в MATLAB®.

Создайте соединение с базой данных ODBC к базе данных Microsoft SQL Server с аутентификацией Windows®. Задайте пустое имя пользователя и пароль. База данных содержит таблицы productTable и suppliers.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Соедините две таблицы базы данных, productTable и suppliers. Таблица productTable является столом, из-за которого встают, соединения, и таблица suppliers является правильной таблицей соединения. Функция sqlouterjoin автоматически обнаруживает разделяемый столбец между таблицами.

data является таблицей, которая содержит совпадающие и несопоставленные строки из этих двух таблиц.

lefttable = 'productTable';
righttable = 'suppliers';
data = sqlouterjoin(conn,lefttable,righttable);

Отобразите первые три строки данных, к которым соединяют. Столбцы из правильной таблицы появляются справа от столбцов из вставшего стола.

head(data,3)
ans =

  3×10 table

    productNumber    stockNumber    supplierNumber    unitCost    productDescription    SupplierNumber      SupplierName          City           Country           FaxNumber   
    _____________    ___________    ______________    ________    __________________    ______________    _________________    __________    ________________    ______________

          1          4.0035e+05          1001            14       'Building Blocks'          1001         'Wonder Products'    'New York'    'United States'     '212 435 1617'
          2          4.0031e+05          1002             9       'Painting Set'             1002         'Terrific Toys'      'London'      'United Kingdom'    '44 456 9345' 
          3            4.01e+05          1009            17       'Slinky'                   1009         'Doll's Galore'      'London'      'United Kingdom'    '44 222 2397' 

Закройте соединение с базой данных.

close(conn)

Используйте связь ODBC, чтобы импортировать данные о продукте от внешнего соединения между двумя таблицами базы данных Microsoft® SQL Server® в MATLAB®. Задайте каталог базы данных и схему, где таблицы хранятся.

Создайте соединение с базой данных ODBC к базе данных Microsoft SQL Server с аутентификацией Windows®. Задайте пустое имя пользователя и пароль. База данных содержит таблицы productTable и suppliers.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Соедините две таблицы базы данных, productTable и suppliers. Таблица productTable является столом, из-за которого встают, соединения, и таблица suppliers является правильной таблицей соединения. Функция sqlouterjoin автоматически обнаруживает разделяемый столбец между таблицами. Задайте каталог toy_store и схему dbo для обоих левые и правые таблицы. Используйте аргументы пары "имя-значение" 'LeftCatalog' и 'LeftSchema' для стола, из-за которого встают и аргументы пары "имя-значение" 'RightCatalog' и 'RightSchema' для правильной таблицы.

data является таблицей, которая содержит совпадающие и несопоставленные строки из этих двух таблиц.

lefttable = 'productTable';
righttable = 'suppliers';
data = sqlouterjoin(conn,lefttable,righttable,'LeftCatalog','toy_store', ...
    'LeftSchema','dbo','RightCatalog','toy_store','RightSchema','dbo');

Отобразите первые три строки данных, к которым соединяют. Столбцы из правильной таблицы появляются справа от столбцов из вставшего стола.

head(data,3)
ans =

  3×10 table

    productNumber    stockNumber    supplierNumber    unitCost    productDescription    SupplierNumber      SupplierName          City           Country           FaxNumber   
    _____________    ___________    ______________    ________    __________________    ______________    _________________    __________    ________________    ______________

          1          4.0035e+05          1001            14       'Building Blocks'          1001         'Wonder Products'    'New York'    'United States'     '212 435 1617'
          2          4.0031e+05          1002             9       'Painting Set'             1002         'Terrific Toys'      'London'      'United Kingdom'    '44 456 9345' 
          3            4.01e+05          1009            17       'Slinky'                   1009         'Doll's Galore'      'London'      'United Kingdom'    '44 222 2397' 

Закройте соединение с базой данных.

close(conn)

Используйте связь ODBC, чтобы импортировать данные о продукте, к которым соединяют, от двух таблиц базы данных Microsoft® SQL Server® в MATLAB®. Задайте ключ, чтобы использовать для присоединения таблиц.

Создайте соединение с базой данных ODBC к базе данных Microsoft SQL Server с аутентификацией Windows®. Задайте пустое имя пользователя и пароль. База данных содержит таблицы productTable и suppliers.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Соедините две таблицы базы данных, productTable и suppliers. Таблица productTable является столом, из-за которого встают, соединения, и таблица suppliers является правильной таблицей соединения. Задайте ключ или совместно использованный столбец, между таблицами с помощью аргумента пары "имя-значение" 'Keys'.

data является таблицей, которая содержит совпадающие и несопоставленные строки из этих двух таблиц.

lefttable = 'productTable';
righttable = 'suppliers';
data = sqlouterjoin(conn,lefttable,righttable,'Keys','supplierNumber');

Отобразите первые три строки данных, к которым соединяют. Столбцы из правильной таблицы появляются справа от столбцов из вставшего стола.

head(data,3)
ans =

  3×10 table

    productNumber    stockNumber    supplierNumber    unitCost    productDescription    SupplierNumber      SupplierName          City           Country           FaxNumber   
    _____________    ___________    ______________    ________    __________________    ______________    _________________    __________    ________________    ______________

          1          4.0035e+05          1001            14       'Building Blocks'          1001         'Wonder Products'    'New York'    'United States'     '212 435 1617'
          2          4.0031e+05          1002             9       'Painting Set'             1002         'Terrific Toys'      'London'      'United Kingdom'    '44 456 9345' 
          3            4.01e+05          1009            17       'Slinky'                   1009         'Doll's Galore'      'London'      'United Kingdom'    '44 222 2397' 

Закройте соединение с базой данных.

close(conn)

Используйте связь ODBC, чтобы импортировать данные сотрудника от внешнего соединения между двумя таблицами базы данных Microsoft® SQL Server® в MATLAB®. Задайте левые и правые ключи для соединения.

Создайте соединение с базой данных ODBC к базе данных Microsoft SQL Server с аутентификацией Windows®. Задайте пустое имя пользователя и пароль. База данных содержит таблицы employees и departments.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Соедините две таблицы базы данных, employees и departments, чтобы найти менеджеров конкретных отделов. Таблица employees является столом, из-за которого встают, соединения, и таблица departments является правильной таблицей соединения. Здесь, имена столбцов ключей отличаются. Укажите, что MANAGER_ID вводит вставший стол с помощью аргумента пары "имя-значение" 'LeftKeys'. Укажите, что DEPT_MANAGER_ID вводит правильную таблицу с помощью аргумента пары "имя-значение" 'RightKeys'.

data является таблицей, которая содержит совпадающие и несопоставленные строки из этих двух таблиц.

lefttable = 'employees';
righttable = 'departments';
data = sqlouterjoin(conn,lefttable,righttable,'LeftKeys','MANAGER_ID', ...
    'RightKeys','DEPT_MANAGER_ID');

Отобразите последние три несопоставленных строки данных, к которым соединяют. Отобразите последние пять переменных данных, к которым соединяют.

tail(data(:,end-4:end),3)
ans =

  3×5 table

    DEPARTMENT_ID    DEPARTMENT_ID_1     DEPARTMENT_NAME     DEPT_MANAGER_ID    LOCATION_ID
    _____________    _______________    _________________    _______________    ___________

         NaN               230          'IT Helpdesk'              NaN             1700    
         NaN                40          'Human Resources'          203             2400    
         NaN                10          'Administration'           200             1700    

Закройте соединение с базой данных.

close(conn)

Используйте связь ODBC, чтобы импортировать данные сотрудника, к которым соединяют, от двух таблиц базы данных Microsoft® SQL Server® в MATLAB®. Создайте правильное соединение и задайте левые и правые ключи для соединения.

Создайте соединение с базой данных ODBC к базе данных Microsoft SQL Server с аутентификацией Windows®. Задайте пустое имя пользователя и пароль. База данных содержит таблицы employees и departments.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Соедините две таблицы базы данных, employees и departments, чтобы найти менеджеров конкретных отделов. Таблица employees является столом, из-за которого встают, соединения, и таблица departments является правильной таблицей соединения. Здесь, имена столбцов ключей отличаются. Укажите, что MANAGER_ID вводит вставший стол с помощью аргумента пары "имя-значение" 'LeftKeys'. Укажите, что DEPT_MANAGER_ID вводит правильную таблицу с помощью аргумента пары "имя-значение" 'RightKeys'. Создайте правильное соединение с помощью аргумента пары "имя-значение" 'Type'.

lefttable = 'employees';
righttable = 'departments';
data = sqlouterjoin(conn,lefttable,righttable,'LeftKeys','MANAGER_ID', ...
    'RightKeys','DEPT_MANAGER_ID','Type','right');

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

Отобразите последние три несопоставленных строки данных, к которым соединяют. Отобразите последние пять переменных данных, к которым соединяют.

tail(data(:,end-4:end),3)
ans =

  3×5 table

    DEPARTMENT_ID    DEPARTMENT_ID_1    DEPARTMENT_NAME    DEPT_MANAGER_ID    LOCATION_ID
    _____________    _______________    _______________    _______________    ___________

         NaN               250          'Retail Sales'           NaN             1700    
         NaN               260          'Recruiting'             NaN             1700    
         NaN               270          'Payroll'                NaN             1700    

Закройте соединение с базой данных.

close(conn)

Используйте связь ODBC, чтобы импортировать данные о продукте, к которым соединяют, от двух таблиц базы данных Microsoft® SQL Server® в MATLAB®. Задайте количество строк, чтобы возвратиться.

Создайте соединение с базой данных ODBC к базе данных Microsoft SQL Server с аутентификацией Windows®. Задайте пустое имя пользователя и пароль. База данных содержит таблицы productTable и suppliers.

datasource = 'MS SQL Server Auth';
conn = database(datasource,'','');

Проверяйте соединение с базой данных. Если свойство Message пусто, то связь успешна.

conn.Message
ans =

     []

Соедините две таблицы базы данных, productTable и suppliers. Таблица productTable является столом, из-за которого встают, соединения, и таблица suppliers является правильной таблицей соединения. Функция sqlouterjoin автоматически обнаруживает разделяемый столбец между таблицами. Задайте количество строк, чтобы возвратить использование аргумента пары "имя-значение" 'MaxRows'.

lefttable = 'productTable';
righttable = 'suppliers';
data = sqlouterjoin(conn,lefttable,righttable,'MaxRows',3)
data =

  3×10 table

    productNumber    stockNumber    supplierNumber    unitCost    productDescription    SupplierNumber            SupplierName                City            Country           FaxNumber   
    _____________    ___________    ______________    ________    __________________    ______________    _____________________________    ___________    _______________    _______________

          7          3.8912e+05          1007            16        'Engine Kit'              1007         'Garvin's Electrical  Gizmos'    'Wellesley'    'United States'    '617 919 3456' 
          8          2.1257e+05          1001             5        'Train Set'               1001         'Wonder Products'                'New York'     'United States'    '212 435 1617' 
          9          1.2597e+05          1003            13        'Victorian Doll'          1003         'Wacky Widgets'                  'Adelaide'     'Australia'        '618 8490 2211'

data является таблицей, которая содержит три из совпадающих и несопоставленных строк из этих двух таблиц. Столбцы из правильной таблицы появляются справа от столбцов из вставшего стола.

Закройте соединение с базой данных.

close(conn)

Входные параметры

свернуть все

Соединение с базой данных, заданное как объект connection, создается с функцией database.

Стол, из-за которого встают, заданный как вектор символов или скаляр строки. Задайте имя таблицы базы данных на левой стороне соединения.

Пример: 'inventoryTable'

Типы данных: char | string

Правильная таблица, заданная как вектор символов или скаляр строки. Задайте имя таблицы базы данных на правой стороне соединения.

Пример: 'productTable'

Типы данных: char | string

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: data = sqlouterjoin(conn,lefttable,righttable,'Type','left','MaxRows',5) выполняет внешнее левое соединение между левыми и правыми таблицами и возвращает пять строк данных, к которым соединяют.

Оставленный каталог, заданный как пара, разделенная запятой, состоящая из 'LeftCatalog' и вектора символов или скаляра строки. Задайте имя каталога базы данных, где стол, из-за которого встают, соединения хранится.

Пример: 'LeftCatalog','toy_store'

Типы данных: char | string

Правильный каталог, заданный как пара, разделенная запятой, состоящая из 'RightCatalog' и вектора символов или скаляра строки. Задайте имя каталога базы данных, где правильная таблица соединения хранится.

Пример: 'RightCatalog','toy_store'

Типы данных: char | string

Оставленная схема, заданная как пара, разделенная запятой, состоящая из 'LeftSchema' и вектора символов или скаляра строки. Задайте имя схемы базы данных, где стол, из-за которого встают, соединения хранится.

Пример: 'LeftSchema','dbo'

Типы данных: char | string

Правильная схема, заданная как пара, разделенная запятой, состоящая из 'RightSchema' и вектора символов или скаляра строки. Задайте имя схемы базы данных, где правильная таблица соединения хранится.

Пример: 'RightSchema','dbo'

Типы данных: char | string

Ключи, заданные как пара, разделенная запятой, состоящая из 'Keys' и вектора символов, представляют в виде строки скаляр, массив ячеек из символьных векторов или массив строк. Задайте вектор символов или представьте скаляр в виде строки, чтобы указать на один ключ. Для нескольких ключей задайте массив ячеек из символьных векторов или массив строк. Используйте этот аргумент пары "имя-значение", чтобы идентифицировать разделяемые ключи между этими двумя таблицами, чтобы присоединиться.

Вы не можете использовать этот аргумент пары "имя-значение" с аргументами пары "имя-значение" 'LeftKeys' и 'RightKeys'.

Пример: 'Keys','MANAGER_ID'

Типы данных: char | string | cell

Оставленные ключи, заданные как пара, разделенная запятой, состоящая из 'LeftKeys' и вектора символов, представляют в виде строки скаляр, массив ячеек из символьных векторов или массив строк. Задайте вектор символов или представьте скаляр в виде строки, чтобы указать на один ключ. Для нескольких ключей задайте массив ячеек из символьных векторов или массив строк. Этот аргумент пары "имя-значение" идентифицирует ключи в столе, из-за которого встают, для соединения к правильной таблице.

Используйте этот аргумент пары "имя-значение" с аргументом пары "имя-значение" 'RightKeys'. Оба аргумента должны задать то же количество ключей. Функция sqlouterjoin соединяет значения ключей на основе их порядка.

Пример: 'LeftKeys',["productNumber" "Price"]

Типы данных: char | string | cell

Правильные ключи, заданные как пара, разделенная запятой, состоящая из 'RightKeys' и вектора символов, представляют в виде строки скаляр, массив ячеек из символьных векторов или массив строк. Задайте вектор символов или представьте скаляр в виде строки, чтобы указать на один ключ. Для нескольких ключей задайте массив ячеек из символьных векторов или массив строк. Этот аргумент пары "имя-значение" идентифицирует ключи в правильной таблице для соединения к вставшему столу.

Используйте этот аргумент пары "имя-значение" с аргументом пары "имя-значение" 'LeftKeys'. Оба аргумента должны задать то же количество ключей. Функция sqlouterjoin соединяет значения ключей на основе их порядка.

Пример: 'RightKeys',["productNumber" "Price"]

Типы данных: char | string | cell

Максимальное количество строк, чтобы возвратиться, заданный как пара, разделенная запятой, состоящая из 'MaxRows' и положительного числового скаляра. По умолчанию функция sqlouterjoin возвращает все строки в выполняемый SQL-запрос. Используйте этот аргумент пары "имя-значение", чтобы ограничить количество строк, импортированных в MATLAB®.

Пример: 'MaxRows',10

Типы данных: double

Тип внешнего соединения, заданный как пара, разделенная запятой, состоящая из 'Type' и одно из этих значений:

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

  • 'left' — Левое соединение получает записи, которые имеют совпадающие значения в выбранном столбце обеих таблиц и несопоставленные записи из вставшего стола только.

  • 'right' — Правильное соединение получает записи, которые имеют совпадающие значения в выбранном столбце обеих таблиц и несопоставленные записи из правильной таблицы только.

Можно задать эти значения как вектор символов или представить скаляр в виде строки.

Не все базы данных поддерживают все типы соединения. Для неподдерживаемой базы данных необходимо использовать функцию sqlread, чтобы импортировать данные из обеих таблиц в MATLAB. Затем используйте функцию sqlouterjoin для объединяющих таблиц в рабочем пространстве MATLAB.

Пример: 'Type','left'

Выходные аргументы

свернуть все

Данные, к которым соединяют, возвращенные как таблица, которая содержит строки, соответствующие ключами в левых и правых таблицах базы данных и сохраненных несопоставленных строках. data также содержит переменную для каждого столбца в левых и правых таблицах.

По умолчанию типами данных переменных является double для столбцов, которые имеют типы данных numeric в таблице базы данных. Для любого текста, date, time или типов данных timestamp в таблице базы данных, типы данных переменных являются массивом ячеек из символьных векторов по умолчанию.

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

Переменные в data, которые соответствуют столбцам в столе, из-за которого встают, содержат значения NULL, когда никакие совпадающие строки не существуют в правильной таблице базы данных. Точно так же переменные, которые соответствуют столбцам в правильной таблице, содержат значения NULL, когда никакие совпадающие строки не существуют в левой таблице базы данных.

Введенный в R2018a