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. productTable таблица является столом, из-за которого встают, соединения и suppliers таблица является правильной таблицей соединения. sqlouterjoin функция автоматически обнаруживает разделяемый столбец между таблицами. 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. 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 имя аргумента и 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 функция импортирует данные. Для получения дополнительной информации смотрите раздел Limitations.

  • "modify" — Удалите символы non-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