sqlouterjoin

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

Описание

пример

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 столбец как ключ для соединения двух таблиц базы данных.

Примеры

свернуть все

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

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с помощью имени источника данных, имени пользователя и пароля. База данных содержит таблицы productTable и suppliers.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

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

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

Отображение первых трех строк объединенных данных. Столбцы из правой таблицы (suppliers) находится справа от столбцов левой таблицы (productTable).

head(data,3)
ans=3×10 table
    productnumber    stocknumber    suppliernumber    unitcost    productdescription    suppliernumber_1      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)

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

Создайте подключение базы данных собственного интерфейса PostgreSQL к базе данных PostgreSQL с помощью имени источника данных, имени пользователя и пароля. База данных содержит таблицы productTable и suppliers.

datasource = "PostgreSQLDataSource";
username = "dbdev";
password = "matlab";
conn = postgresql(datasource,username,password);

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

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

Отображение первых трех строк совпадающих данных. Столбцы из правой таблицы (suppliers) находится справа от столбцов левой таблицы (productTable).

head(data,3)
ans=3×10 table
    productnumber    stocknumber    suppliernumber    unitcost    productdescription    suppliernumber_1      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)

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

свернуть все

Подключение к базе данных собственного интерфейса PostgreSQL, заданное как connection объект.

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

Пример: 'inventoryTable'

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

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

Пример: 'productTable'

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

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

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: data = sqlouterjoin(conn,"productTable","suppliers",'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' - Правое соединение извлекает записи, которые имеют совпадающие значения в выбранном столбце обеих таблиц, и несопоставленные записи только из правой таблицы.

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

Когда вы импортируете данные, sqlouterjoin функция преобразует тип данных каждого столбца из базы данных PostgreSQL в тип данных MATLAB. Эта таблица сопоставляет тип данных столбца базы данных с преобразованным типом данных MATLAB.

Тип данных PostgreSQLТип данных MATLAB

Boolean

logical

Smallint

double

Integer

double

Bigint

double

Decimal

double

Numeric

double

Real

double

Double precision

double

Smallserial

double

Serial

double

Bigserial

double

Money

double

Varchar

string

Char

string

Text

string

Bytea

string

Timestamp

datetime

Timestampz

datetime

Abstime

datetime

Date

datetime

Time

duration

Timez

duration

Interval

calendarDuration

Reltime

calendarDuration

Enum

categorical

Cidr

string

Inet

string

Macaddr

string

Uuid

string

Xml

string

Ограничения

Область аргумента пары "имя-значение" 'VariableNamingRule' имеет эти ограничения, когда установлено значение 'modify':

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

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

Введенный в R2020b