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. Одна из таблиц содержит имя переменной с символом non-ASCII. При импортировании данных сохраните имена всех переменных.

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

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

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

conn.Message
ans =

     []

Добавьте столбец в таблицу базы данных productTable. Имя столбца содержит символ non-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.

Сохраните имя переменной, которая содержит символ non-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 функционируйте сохраняет символ non-ASCII в имени переменной.

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

close(conn)

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

свернуть все

Соединение с базой данных в виде ODBC connection возразите или connection JDBC объект создал использование database функция.

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

Пример: 'inventoryTable'

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

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

Пример: 'productTable'

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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" — Удалите символы non-ASCII из имен переменных когда sqlouterjoin функция импортирует данные.

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

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

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

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

свернуть все

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

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

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

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

Ограничения

Аргумент пары "имя-значение" 'VariableNamingRule' имеет эти ограничения:

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

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

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

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

Введенный в R2018a