Q Language - присоединяется
В qНа языке, у нас есть различные типы объединений на основе предоставленных входных таблиц и желаемых типов объединяемых таблиц. Объединение объединяет данные из двух таблиц. Помимо поиска по внешнему ключу, есть еще четыре способа соединения таблиц:
- Простое присоединение
- Присоединиться к
- Левое соединение
- Союз присоединиться
Здесь, в этой главе, мы подробно обсудим каждое из этих объединений.
Простое присоединение
Простое соединение - это самый простой тип соединения, выполняемый через запятую ','. В этом случае две таблицы должны бытьtype conformant, т. е. обе таблицы имеют одинаковое количество столбцов в одинаковом порядке и одинаковый ключ.
table1,:table2 / table1 is assigned the value of table2
Мы можем использовать соединение каждой запятой для таблиц одинаковой длины, чтобы соединиться боком. Здесь можно указать одну из таблиц,
Table1, `Table2
Асоф присоединиться (aj)
Это наиболее мощное соединение, которое используется для получения значения поля в одной таблице, а также значения поля в другой таблице. Обычно он используется для получения преобладающего спроса и предложения во время каждой сделки.
Общий формат
aj[joinColumns;tbl1;tbl2]
Например,
aj[`sym`time;trade;quote]
пример
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))
q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6))
q)show aj[`a`b;tab1;tab2]
a b d c
-------------
1 2 6
2 3 7 4
3 4 8 5
4 5 9 6
Левое соединение (lj)
Это частный случай aj, где второй аргумент - это таблица с ключами, а первый аргумент содержит столбцы ключа правого аргумента.
Общий формат
table1 lj Keyed-table
пример
q)/Left join- syntax table1 lj table2 or lj[table1;table2]
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))
q)tab2:([a:(2 3 4);b:(3 4 5)]; c:( 4 5 6))
q)show lj[tab1;tab2]
a b d c
-------------
1 2 6
2 3 7 4
3 4 8 5
4 5 9 6
Союз Присоединиться (uj)
Это позволяет создать объединение двух таблиц с разными схемами. По сути, это расширение простого соединения (,)
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))
q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6))
q)show uj[tab1;tab2]
a b d c
------------
1 2 6
2 3 7
3 4 8
4 5 9
2 3 4
3 4 5
4 5 6
Если вы используете uj для таблиц с ключами, тогда первичные ключи должны совпадать.