Mega Code Archive

 
Categories / MSSQL Tutorial / Table Join
 

Set join condition in ON clause

2>  CREATE TABLE authors( 3>    au_id          varchar(11), 4>    au_lname       varchar(40)       NOT NULL, 5>    au_fname       varchar(20)       NOT NULL, 6>    phone          char(12)          NOT NULL DEFAULT ('UNKNOWN'), 7>    address        varchar(40)           NULL, 8>    city           varchar(20)           NULL, 9>    state          char(2)               NULL, 10>    zip            char(5)               NULL, 11>    contract       bit               NOT NULL 12> ) 13> GO 1> insert authors values('1',  'Joe',   'Abra',   '111 111-1111', '6 St.', 'Berkeley',  'CA', '11111', 1) 2> insert authors values('2',  'Jack',  'Majo',   '222 222-2222', '3 St.', 'Oakland' ,  'CA', '22222', 1) 3> insert authors values('3',  'Pink',  'Cherry', '333 333-3333', '5 Ln.', 'Vancouver', 'BC', '33333', 1) 4> insert authors values('4',  'Blue',  'Albert', '444 444-4444', '7 Av.', 'Vancouver', 'BC', '44444', 1) 5> insert authors values('5',  'Red',   'Anne',   '555 555-5555', '6 Av.', 'Regina',    'SK', '55555', 1) 6> insert authors values('6',  'Black', 'Michel', '666 666-6666', '3 Pl.', 'Regina',    'SK', '66666', 1) 7> insert authors values('7',  'White', 'Sylvia', '777 777-7777', '1 Pl.', 'Rockville', 'MD', '77777', 1) 8> insert authors values('8',  'Yellow','Heather','888 888-8888', '3 Pu',  'Vacaville', 'CA', '88888', 0) 9> insert authors values('9',  'Gold',  'Dep',    '999 999-9999', '5 Av.', 'Oakland',   'CA', '99999', 0) 10> insert authors values('10', 'Siler', 'Dean',   '000 000-0000', '4 Av.', 'Oakland',   'CA', '00000', 1) 11> GO (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) 1> 2> CREATE TABLE titles( 3>    title_id       varchar(20), 4>    title          varchar(80)       NOT NULL, 5>    type           char(12)          NOT NULL, 6>    pub_id         char(4)               NULL, 7>    price          money                 NULL, 8>    advance        money                 NULL, 9>    royalty        int                   NULL, 10>    ytd_sales      int                   NULL, 11>    notes          varchar(200)          NULL, 12>    pubdate        datetime          NOT NULL 13> ) 14> GO 1> 2> insert titles values ('1', 'Secrets',   'popular_comp', '1389', $20.00, $8000.00, 10, 4095,'Note 1','06/12/94') 3> insert titles values ('2', 'The',       'business',     '1389', $19.99, $5000.00, 10, 4095,'Note 2','06/12/91') 4> insert titles values ('3', 'Emotional', 'psychology',   '0736', $7.99,  $4000.00, 10, 3336,'Note 3','06/12/91') 5> insert titles values ('4', 'Prolonged', 'psychology',   '0736', $19.99, $2000.00, 10, 4072,'Note 4','06/12/91') 6> insert titles values ('5', 'With',      'business',     '1389', $11.95, $5000.00, 10, 3876,'Note 5','06/09/91') 7> insert titles values ('6', 'Valley',    'mod_cook',     '0877', $19.99, $0.00,    12, 2032,'Note 6','06/09/91') 8> insert titles values ('7', 'Any?',      'trad_cook',    '0877', $14.99, $8000.00, 10, 4095,'Note 7','06/12/91') 9> insert titles values ('8', 'Fifty',     'trad_cook',    '0877', $11.95, $4000.00, 14, 1509,'Note 8','06/12/91') 10> GO (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) 1> 2> CREATE TABLE titleauthor( 3>    au_id          varchar(20), 4>    title_id       varchar(20), 5>    au_ord         tinyint               NULL, 6>    royaltyper     int                   NULL 7> ) 8> GO 1> 2> insert titleauthor values('1', '2', 1, 60) 3> insert titleauthor values('2', '3', 1, 100) 4> insert titleauthor values('3', '4', 1, 100) 5> insert titleauthor values('4', '5', 1, 100) 6> insert titleauthor values('5', '6', 1, 100) 7> insert titleauthor values('6', '7', 2, 40) 8> insert titleauthor values('7', '8', 1, 100) 9> insert titleauthor values('8', '9', 1, 100) 10> GO (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) 1> 2> 3> 4> SELECT 5> 'Author'=RTRIM(au_lname) + ', ' + au_fname, 6> 'Title'=title 7> FROM authors AS A JOIN titleauthor AS TA 8>     ON A.au_id=TA.au_id          -- JOIN CONDITION 9> JOIN titles AS T 10>     ON T.title_id=TA.title_id    -- JOIN CONDITION 11> WHERE A.state <> 'CA' 12> ORDER BY 1 13> GO Author                                                         Title -------------------------------------------------------------- -------------------------------------------------------------------------------- Black, Michel                                                  Any? Blue, Albert                                                   With Pink, Cherry                                                   Prolonged Red, Anne                                                      Valley White, Sylvia                                                  Fifty (10 rows affected) 1> 2> drop table authors; 3> drop table titles; 5> GO 1>