chrise
chrise

Reputation: 4253

KDB select where

I have a table

t:flip `dt`id`data ! (`d1`d1`d2`d2`d3`d3; 0 1 0 1 0 1; 100 200 100 300 0 200)

and from some other query, I have a table

s:flip `dt`id ! (`d1`d2`d2`d3; 0 0 1 1)

How can I select from t such that it returns all entries where the combination of dt and id are in s, so return

flip `dt`id`data ! (`d1`d2`d2`d3; 0 0 1  1; 100 100 300 200)

Upvotes: 2

Views: 499

Answers (1)

Sean O'Hagan
Sean O'Hagan

Reputation: 1697

You can use in on table to table ops so just create a table from your required columns in t and use in to search s for the corresponding records. As long as the table columns and types from the left argument and right argument are the same, then in will produce a boolean list as expected.

q)select from t where ([]dt;id) in s
dt id data
----------
d1 0  100
d2 0  100
d2 1  300
d3 1  200

Upvotes: 4

Related Questions