exponenta event banner

sqlouterjoin

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

Описание

пример

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)

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

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

datasource = "MSSQLServerAuth";
conn = database(datasource,"","");

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

conn.Message
ans =

     []

Добавление столбца в таблицу базы данных productTable. Имя столбца содержит символ, отличный от ASCII.

sqlquery = "ALTER TABLE productTable ADD tamaño varchar(30)"; 
execute(conn,sqlquery)

Объединение двух таблиц базы данных, productTable и suppliers. productTable таблица - левая таблица соединения, и suppliers таблица - это правая таблица соединения. sqlouterjoin функция автоматически обнаруживает общий столбец между таблицами. Укажите количество строк, возвращаемых с помощью 'MaxRows' аргумент пары имя-значение.

lefttable = 'productTable'; 
righttable = 'suppliers'; 
data = sqlouterjoin(conn,lefttable,righttable,'MaxRows',3) 
data=3×11 table
    productNumber    stockNumber    supplierNumber    unitCost    productDescription      tama_o      SupplierNumber             SupplierName                  City              Country             FaxNumber    
    _____________    ___________    ______________    ________    __________________    __________    ______________    _______________________________    _____________    _________________    _________________

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

data - таблица, содержащая три из сопоставленных строк из двух таблиц. sqlouterjoin функция преобразует имя новой переменной в символы ASCII.

Сохраните имя переменной, содержащей символ, отличный от ASCII, указав VariableNamingRule аргумент пары имя-значение. Импортируйте данные еще раз.

data = sqlouterjoin(conn,lefttable,righttable,'MaxRows',3, ...
    'VariableNamingRule',"preserve") 
data=3×11 table
    productNumber    stockNumber    supplierNumber    unitCost    productDescription      tamaño      SupplierNumber             SupplierName                  City              Country             FaxNumber    
    _____________    ___________    ______________    ________    __________________    __________    ______________    _______________________________    _____________    _________________    _________________

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

sqlouterjoin функция сохраняет символ, отличный от ASCII, в имени переменной.

Закройте подключение к базе данных.

close(conn)

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

свернуть все

Подключение к базе данных, указанное как ODBC connection объект или JDBC connection объект, созданный с помощью database функция.

Левая таблица, заданная как вектор символа или скаляр строки. Укажите имя таблицы базы данных в левой части соединения.

Пример: 'inventoryTable'

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

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

Пример: 'productTable'

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

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

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. 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"],'RightKeys',["productNumber" "Price"]

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

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

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

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

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

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

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

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

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

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

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

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

Эти значения можно указать как вектор символа или скаляр строки.

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

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

Правило именования переменных, указанное как пара, разделенная запятыми, состоящая из 'VariableNamingRule' и одно из этих значений:

  • "modify" - Удаление символов, отличных от ASCII, из имен переменных sqlouterjoin функция импортирует данные.

  • "preserve" - Сохранение большинства имен переменных при sqlouterjoin функция импортирует данные. Дополнительные сведения см. в разделе Ограничения.

Пример: 'VariableNamingRule',"modify"

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

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

свернуть все

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

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

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

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

Ограничения

Аргумент пары имя-значение 'VariableNamingRule' имеет следующие ограничения:

  • sqlouterjoin функция возвращает ошибку при использовании 'VariableNamingRule' аргумент пары имя-значение с SQLImportOptions объект opts.

  • Когда 'VariableNamingRule' аргумент пары имя-значение установлен в значение 'modify':

    • Имена переменных Properties, RowNames, и VariableNames являются зарезервированными идентификаторами для table тип данных.

    • Длина каждого имени переменной должна быть меньше числа, возвращаемого namelengthmax.

Представлен в R2018a