Putting tables together Joins in SQL In regular SAS -- MERGE proc sort data=left ; by key ; run ; proc sort data=right ; by key ; run ; data both ; merge left (in=inleft) right (in=inright) ; by key ; < if … inleft, inright … then action > run ; Three types of ‘Outer Joins’ Occasionally • Key is unique in both tables (keys/are) • Key is only variable in common (keys/are) Then do ‘natural join’ More typically • One table (left) is bigger than the other • Key is unique in smaller (right) table Then do ‘left join’ Outer Joins Occasionally • Key may not be unique • Mismatches do not trigger corrective action Then do ‘full join’ Natural, left, and full joins are ‘outer joins’ Tables do not need to be sorted Inner Joins • Can join multiple tables at once • Subsetted by WHERE conditions • Naturally constructs Cartesian product of all entries of one table with all of another table (and with any others…) *** Cartesian products can get very big, very fast, so if WHERE conditions not correct, the resulting query can be astronomically large***
© Copyright 2024 Paperzz