2017-11-06 11 views
0

SQLサブクエリについて学習しています。 、私はこのクエリ上で見てきました2つのサブクエリを使用するSQL

+------------+------------+---------+ 
| account_id | product_cd | cust_id | 
+------------+------------+---------+ 
|   1 | CHK  |  1 | 
|   2 | SAV  |  1 | 
|   3 | CD   |  1 | 
|   4 | CHK  |  2 | 
|   5 | SAV  |  2 | 
|   17 | CD   |  7 | 
|   27 | BUS  |  11 | 
+------------+------------+---------+ 

がそれを解釈し、それだけでなく、それの句の背後にある理由を理解しようとしているが、:

SELECT account_id, product_cd, cust_id 
FROM account 
WHERE open_branch_id = (
    SELECT branch_id 
    FROM branch 
    WHERE name = 'Woburn Branch' 
) AND open_emp_id IN (
    SELECT emp_id 
    FROM employee 
    WHERE title = 'Teller' OR title = 'Head Teller' 
); 

結果:ここで私は本から使用していますサブクエリがあります私は最後のANDAND open_emp_id INの理由を理解することができない...

私はちょうど

SELECT account_id, product_cd, cust_id 
FROM account 
WHERE open_branch_id = (
    SELECT branch_id 
    FROM branch 
    WHERE name = 'Woburn Branch' 
) 
であることに気づきました

上記と同じ結果になります。誰も私に最後のAND open_emp_id INの後ろの推論を説明することができ、それを省略すると最終的な結果にどのように影響するでしょうか?サブクエリで使用

テーブル:

アカウントテーブル

+------------+------------+---------+------------+------------+--------------------+--------+----------------+-------------+---------------+-----------------+ 
| account_id | product_cd | cust_id | open_date | close_date | last_activity_date | status | open_branch_id | open_emp_id | avail_balance | pending_balance | 
+------------+------------+---------+------------+------------+--------------------+--------+----------------+-------------+---------------+-----------------+ 
|   1 | CHK  |  1 | 2000-01-15 | NULL  | 2005-01-04   | ACTIVE |    2 |   10 |  1057.75 |   1057.75 | 
|   2 | SAV  |  1 | 2000-01-15 | NULL  | 2004-12-19   | ACTIVE |    2 |   10 |  500.00 |   500.00 | 
|   3 | CD   |  1 | 2004-06-30 | NULL  | 2004-06-30   | ACTIVE |    2 |   10 |  3000.00 |   3000.00 | 
|   4 | CHK  |  2 | 2001-03-12 | NULL  | 2004-12-27   | ACTIVE |    2 |   10 |  2258.02 |   2258.02 | 
|   5 | SAV  |  2 | 2001-03-12 | NULL  | 2004-12-11   | ACTIVE |    2 |   10 |  200.00 |   200.00 | 
|   7 | CHK  |  3 | 2002-11-23 | NULL  | 2004-11-30   | ACTIVE |    3 |   13 |  1057.75 |   1057.75 | 
|   8 | MM   |  3 | 2002-12-15 | NULL  | 2004-12-05   | ACTIVE |    3 |   13 |  2212.50 |   2212.50 | 
|   10 | CHK  |  4 | 2003-09-12 | NULL  | 2005-01-03   | ACTIVE |    1 |   1 |  534.12 |   534.12 | 
|   11 | SAV  |  4 | 2000-01-15 | NULL  | 2004-10-24   | ACTIVE |    1 |   1 |  767.77 |   767.77 | 
|   12 | MM   |  4 | 2004-09-30 | NULL  | 2004-11-11   | ACTIVE |    1 |   1 |  5487.09 |   5487.09 | 
|   13 | CHK  |  5 | 2004-01-27 | NULL  | 2005-01-05   | ACTIVE |    4 |   16 |  2237.97 |   2897.97 | 
|   14 | CHK  |  6 | 2002-08-24 | NULL  | 2004-11-29   | ACTIVE |    1 |   1 |  122.37 |   122.37 | 
|   15 | CD   |  6 | 2004-12-28 | NULL  | 2004-12-28   | ACTIVE |    1 |   1 |  10000.00 |  10000.00 | 
|   17 | CD   |  7 | 2004-01-12 | NULL  | 2004-01-12   | ACTIVE |    2 |   10 |  5000.00 |   5000.00 | 
|   18 | CHK  |  8 | 2001-05-23 | NULL  | 2005-01-03   | ACTIVE |    4 |   16 |  3487.19 |   3487.19 | 
|   19 | SAV  |  8 | 2001-05-23 | NULL  | 2004-10-12   | ACTIVE |    4 |   16 |  387.99 |   387.99 | 
|   21 | CHK  |  9 | 2003-07-30 | NULL  | 2004-12-15   | ACTIVE |    1 |   1 |  125.67 |   125.67 | 
|   22 | MM   |  9 | 2004-10-28 | NULL  | 2004-10-28   | ACTIVE |    1 |   1 |  9345.55 |   9845.55 | 
|   23 | CD   |  9 | 2004-06-30 | NULL  | 2004-06-30   | ACTIVE |    1 |   1 |  1500.00 |   1500.00 | 
|   24 | CHK  |  10 | 2002-09-30 | NULL  | 2004-12-15   | ACTIVE |    4 |   16 |  23575.12 |  23575.12 | 
|   25 | BUS  |  10 | 2002-10-01 | NULL  | 2004-08-28   | ACTIVE |    4 |   16 |   0.00 |   0.00 | 
|   27 | BUS  |  11 | 2004-03-22 | NULL  | 2004-11-14   | ACTIVE |    2 |   10 |  9345.55 |   9345.55 | 
|   28 | CHK  |  12 | 2003-07-30 | NULL  | 2004-12-15   | ACTIVE |    4 |   16 |  38552.05 |  38552.05 | 
|   29 | SBL  |  13 | 2004-02-22 | NULL  | 2004-12-17   | ACTIVE |    3 |   13 |  50000.00 |  50000.00 | 
+------------+------------+---------+------------+------------+--------------------+--------+----------------+-------------+---------------+-----------------+ 

支店テーブル:

+-----------+---------------+----------------------+---------+-------+-------+ 
| branch_id | name   | address    | city | state | zip | 
+-----------+---------------+----------------------+---------+-------+-------+ 
|   1 | Headquarters | 3882 Main St.  | Waltham | MA | 02451 | 
|   2 | Woburn Branch | 422 Maple St.  | Woburn | MA | 01801 | 
|   3 | Quincy Branch | 125 Presidential Way | Quincy | MA | 02169 | 
|   4 | So. NH Branch | 378 Maynard Ln.  | Salem | NH | 03079 | 
+-----------+---------------+----------------------+---------+-------+-------+ 

Employeeテーブル:

+--------+----------+-----------+------------+----------+-----------------+---------+--------------------+--------------------+ 
| emp_id | fname | lname  | start_date | end_date | superior_emp_id | dept_id | title    | assigned_branch_id | 
+--------+----------+-----------+------------+----------+-----------------+---------+--------------------+--------------------+ 
|  1 | Michael | Smith  | 2005-06-22 | NULL  |   NULL |  3 | President   |     1 | 
|  2 | Susan | Barker | 2006-09-12 | NULL  |    1 |  3 | Vice President  |     1 | 
|  3 | Robert | Tyler  | 2005-02-09 | NULL  |    1 |  3 | Treasurer   |     1 | 
|  4 | Susan | Hawthorne | 2006-04-24 | NULL  |    3 |  1 | Operations Manager |     1 | 
|  5 | John  | Gooding | 2007-11-14 | NULL  |    4 |  2 | Loan Manager  |     1 | 
|  6 | Helen | Fleming | 2008-03-17 | NULL  |    4 |  1 | Head Teller  |     1 | 
|  7 | Chris | Tucker | 2008-09-15 | NULL  |    6 |  1 | Teller    |     1 | 
|  8 | Sarah | Parker | 2006-12-02 | NULL  |    6 |  1 | Teller    |     1 | 
|  9 | Jane  | Grossman | 2006-05-03 | NULL  |    6 |  1 | Teller    |     1 | 
|  10 | Paula | Roberts | 2006-07-27 | NULL  |    4 |  1 | Head Teller  |     2 | 
|  11 | Thomas | Ziegler | 2004-10-23 | NULL  |    10 |  1 | Teller    |     2 | 
|  12 | Samantha | Jameson | 2007-01-08 | NULL  |    10 |  1 | Teller    |     2 | 
|  13 | John  | Blake  | 2004-05-11 | NULL  |    4 |  1 | Head Teller  |     3 | 
|  14 | Cindy | Mason  | 2006-08-09 | NULL  |    13 |  1 | Teller    |     3 | 
|  15 | Frank | Portman | 2007-04-01 | NULL  |    13 |  1 | Teller    |     3 | 
|  16 | Theresa | Markham | 2005-03-15 | NULL  |    4 |  1 | Head Teller  |     4 | 
|  17 | Beth  | Fowler | 2006-06-29 | NULL  |    16 |  1 | Teller    |     4 | 
|  18 | Rick  | Tulman | 2006-12-12 | NULL  |    16 |  1 | Teller    |     4 | 
+--------+----------+-----------+------------+----------+-----------------+---------+--------------------+--------------------+ 

答えて

2

AND open_emp_id IN句は、タイトルが「Teller」または「Head Teller」の従業員IDのみを選択しています。あなたのケースでは、名前が「ウォーバーン支店」という名前の支店を探しているので結果は変わらず、そこにいるすべての従業員はタイトル「テラー」または「ヘッド・テラー」のみたいです。

|  10 | Paula | Roberts | 2006-07-27 | NULL  |    4 |  1 | Head Teller  |     2 | 

|  11 | Thomas | Ziegler | 2004-10-23 | NULL  |    10 |  1 | Teller    |     2 | 

|  12 | Samantha | Jameson | 2007-01-08 | NULL  |    10 |  1 | Teller    |     2 | 

最初のクエリでブランチ名を 'Headquarters'に変更すると、サブクエリの違いがわかります。 「本社」のタイトル「出納係」または「ヘッド・テラー」を持たない従業員は除外されます。

+0

ありがとうございます! – user3809875

1

最後の選択基準tを狭めますo出納係やヘッド・テラーによって開かれた口座のみを含みます。ローンマネージャーまたはオペレーションマネージャーが口座を開設した場合、それは除外されます。

関連する問題