The result of the previous join is then joined to another table : Table Join « Table Join « SQL Server / T-SQL Tutorial






3> CREATE TABLE authors(
4>    au_id          varchar(11),
5>    au_lname       varchar(40)       NOT NULL,
6>    au_fname       varchar(20)       NOT NULL,
7>    phone          char(12)          NOT NULL DEFAULT ('UNKNOWN'),
8>    address        varchar(40)           NULL,
9>    city           varchar(20)           NULL,
10>    state          char(2)               NULL,
11>    zip            char(5)               NULL,
12>    contract       bit               NOT NULL
13> )
14> 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
8>     (                -- JOIN CONDITIONS
9>     -- FIRST join authors and titleauthor
10>         (authors AS A
11>         FULL OUTER JOIN titleauthor AS TA ON A.au_id=TA.au_id
12>         )
13>     -- The result of the previous join is then joined to titles
14>         FULL OUTER JOIN titles AS T ON TA.title_id=T.title_id
15>     )
16> WHERE
17> state <> 'CA' OR state IS NULL
18> ORDER BY 1
19> GO
Author                                                         Title
-------------------------------------------------------------- --------------------------------------------------------------------------------
NULL                                                           Secrets
Black, Michel                                                  Any?
Black, Michel                                                  Any?
Black, Michel                                                  Any?
Black, Michel                                                  Any?
Blue, Albert                                                   With
Blue, Albert                                                   With
Blue, Albert                                                   With
Blue, Albert                                                   With
Pink, Cherry                                                   Prolonged
Pink, Cherry                                                   Prolonged
Pink, Cherry                                                   Prolonged
Pink, Cherry                                                   Prolonged
Red, Anne                                                      Valley
Red, Anne                                                      Valley
Red, Anne                                                      Valley
Red, Anne                                                      Valley
White, Sylvia                                                  Fifty
White, Sylvia                                                  Fifty
White, Sylvia                                                  Fifty
White, Sylvia                                                  Fifty

(21 rows affected)
1>
2>
3> drop table authors;
4> drop table titles;
5> drop table titleauthors;
6> GO
1>








4.1.Table Join
4.1.1.SQL Server 2005 join types fall into three categories: inner, outer, and cross.
4.1.2.Selecting authors and titles using only joins.
4.1.3.A SELECT statement that joins the Bankers and Billings tables
4.1.4.Joining Tables in the WHERE Clause (not ANSI standard)
4.1.5.Using the GROUP BY Clause
4.1.6.Joining three tables.
4.1.7.Joins and Subqueries
4.1.8.Left and Right Outer Joins
4.1.9.Joining Tables in the FROM Clause (ANSI standard)
4.1.10.Table Aliasing
4.1.11.Join tables with two columns
4.1.12.The result of the previous join is then joined to another table
4.1.13.SQL-92 Three-Way Inner Joins
4.1.14.Forcing the Order of Join Processing