join
join
<seq1>:join(seq2, predicate(seq1.item, seq2.item), alias="table2")
Esegue l'inner join delle due sequenze basato sul predicato di matching. Se le tabelle sono chiave valore e ci sono delle collisioni i campi della prima tabella vengono preservati mentre quelli della seconda prendono l'alias (es. "ID" --> "Ordini.ID"). Se non passato l'alias vale "table2".
Nel caso di tabelle sequenziali i campi della seconda tabella vengono accodati alla prima. Se le tabelle non sono rettangolari non sono facilmente gestibili.
local a = XTable(Orders)
:where(function(x, i) return x.ShipCountry == "USA" and x.CustomerID == "OLDWO" end)
:join(Customers, function(order, customer) return order.CustomerID == order.CustomerID end)
:select({"ContactName", "CompanyName", "OrderID", "ShipCountry"})
:astable()
alert(a)