2017-09-24 6 views
-3

顧客番号282と同じ担当者番号を持つ顧客番号、顧客名、営業担当者をリストします。これはサブクエリである必要があり、営業担当者35は明示的にテストしません。データベース内のMySQLでサブクエリを作成

use premier_products; 

SELECT customer.customer_num, customer.customer_name, rep.first_name 
FROM rep 
JOIN customer ON rep.rep_num = customer.rep_num 
WHERE customer_num = 282; 

次の質問でサブクエリを構成する方法と混同しています。 2つのテーブルの間に関連する唯一の2つのフィールドは、rep.rep_num = customer.rep_num.iです。reguarを作成する方法は分かっていますが、サブクエリでそれを形成する方法を理解する必要があります。

REP.FIRST_NAMEは、営業担当者を指し...

スキーマ」

CREATE DATABASE premier_products; 

REP表

CREATE TABLE rep 
(
rep_num char(2) primary key, 

last_name varchar(15), 

first_name varchar(15), 

street varchar(15), 

city varchar(15), 

state char(2), 

zip char(5), 

commission decimal(7,2), 

rate decimal(3,2) 

); 

Customerテーブル

CREATE TABLE customer 

(

customer_num char(3) primary key, 

customer_name varchar(30), 

street varchar(15), 

city varchar(15), 

state char(15), 

zip char(5), 

balance decimal(7,2), 

credit_limit decimal(7,2), 

rep_num char(2) 

); 

注文テーブル

CREATE TABLE orders 

(

order_num char(5) primary key, 

order_date timestamp, 

customer_num char(3) 

); 

ORDER_LINEテーブル

CREATE TABLE order_line 

(

order_num char(5), 

part_num char(4), 

num_ordered int(5), 

quoted_price decimal(7,2), 

PRIMARY KEY (order_num, part_num) 

); 

部品表

CREATE TABLE part 

(

part_num char(4) primary key, 

description varchar(20), 

on_hand int(4), 

class char(2), 

warehouse char(2), 

price decimal (7,2) 
); 

件の移入REP表

INSERT INTO rep values ('20', 'Kaiser', 'Valerie', '624 Randall', 'Grove', 'FL', '33321', 20542.50, 0.05); 

INSERT INTO rep values ('35', 'Hull', 'Richard', '532 Jackson', 'Sheldon', 'FL', '33553', 39216.00, 0.07); 

INSERT INTO rep values ('65', 'Perez', 'Juan', '1626 Taylor', 'Fillmore', 'FL', '33336', 23487.00, 0.05); 

移入の顧客テーブル

INSERT INTO customer values ('148', 'Al''s Appliance and Sport', '2837 Greenway', 'Fillmore', 'FL', '33336', 
6550.00, 7500.00, '20'); 

INSERT INTO customer values ('282', 'Brookings Direct', '3827 Devon', 'Grove', 'FL', '33321', 431.50, 10000.00, '35'); 

INSERT INTO customer values ('356', 'Ferguson''s', '382 Wildwood', 'Northfield', 'FL', '33146', 5785.00, 7500.00, 
'65'); 

INSERT INTO customer values ('408', 'The Everything Shop', '1828 Raven', 'Crystal', 'FL', '33503', 5285.25, 5000.00, '35'); 

INSERT INTO customer values ('462', 'Bargains Galore', '3829 Central', 'Grove', 'FL', '33321', 3412.00, 10000.00, '65'); 

INSERT INTO customer values ('524', 'Kline''s', '838 Ridgeland', 'Fillmore', 'FL', '33336', 12762.00, 15000.00, '20'); 

INSERT INTO customer values ('608', 'Johnson''s Department Store', '372 Oxford', 'Sheldon', 'FL', '33553', 2106.00, 10000.00, '65'); 

INSERT INTO customer values ('687', 'Lee''s Sport and Appliance', '282 Evergreen', 'Altonville', 'FL', '32543', 2851.00, 5000.00, '35'); 

INSERT INTO customer values ('725', 'Deerfield''s Four Seasons', '282 Columbia', 'Sheldon', 'FL', '33553', 248.00, 7500.00, '35'); 

INSERT INTO customer values ('842', 'All Season', '28 Lakeview', 'Grove', 'FL', '33321', 8221.00, 7500.00, '20'); 

移入受注テーブル

INSERT INTO orders value ('21608', '2015-10-20', '148'); 

INSERT INTO orders value ('21610', '2015-10-20', '356'); 
INSERT INTO orders value ('21613', '2015-10-21', '408'); 

INSERT INTO orders value ('21614', '2015-10-21', '282'); 

INSERT INTO orders value ('21617', '2015-10-23', '608'); 
INSERT INTO orders value ('21619', '2015-10-23', '148'); 

INSERT INTO orders value ('21623', '2015-10-23', '608'); 

移入のORDER_LINE表

INSERT INTO order_line value ('21608', 'AT94', 11, 21.95); 

INSERT INTO order_line value ('21610', 'DR93', 1, 495.00); 

INSERT INTO order_line value ('21610', 'DW11', 1, 399.99); 

INSERT INTO order_line value ('21613', 'KL62', 4, 329.95); 

INSERT INTO order_line value ('21614', 'KT03', 2, 595.00); 

INSERT INTO order_line value ('21617', 'BV06', 2, 794.95); 

INSERT INTO order_line value ('21617', 'CD52', 4, 150.00); 

INSERT INTO order_line value ('21619', 'DR93', 1, 495.00); 

INSERT INTO order_line value ('21623', 'KV29', 2, 1290.00); 

あなたはこのように行うことができます

INSERT INTO part value ('AT94', 'Iron', 50, 'HW', '3', 24.95); 

INSERT INTO part value ('BV06', 'Home Gym', 45, 'SG', '2', 794.95); 

INSERT INTO part value ('CD52', 'Microwave Oven', 32, 'AP', '1', 165.00); 

INSERT INTO part value ('DL71', 'Cordless Drill', 21, 'HW', '3', 129.95); 

INSERT INTO part value ('DR93', 'Gas Range', 8, 'AP', '2', 495.00); 

INSERT INTO part value ('DW11', 'Washer', 12, 'AP', '3', 399.99); 

INSERT INTO part value ('FD21', 'Stand Mixer', 22, 'HW', '3', 159.95); 

INSERT INTO part value ('KL62', 'Dryer', 12, 'AP', '1', 349.95); 

INSERT INTO part value ('KT03', 'Dishwasher', 8, 'AP', '3', 595.00); 

INSERT INTO part value ('KV29', 'Treadmill', 9, 'SG', '2', 1390.00); 
+0

"私はそれを規則的な方法で形成する方法を知っています" - あなたの "普通の"解決策を投稿してください。ただし、WHERE句にサブクエリが必要です。 –

+0

SELECT customer.customer_num、customer.customer_name、rep.first_name、担当者 FROM rep.rep_num rep.rep_num = customer.rep_num WHERE customer_num = 282 ON顧客 をJOIN。 –

+0

私はこの方法を知っていますが、サブクエリを作成する方法がわかりません –

答えて

0

クエリを、次の試してみてください。

SELECT customer.customer_num, customer.customer_name, rep.first_name 
    FROM rep 
    JOIN customer ON rep.rep_num = customer.rep_num 
    WHERE rep.first_name = (Select rep.first_name FROM rep 
    JOIN customer ON rep.rep_num = customer.rep_num where customer.customer_num = 282); 

代わりに、変数に顧客282の担当者を保存し、ちょうどwhere句で使用することができます。そのようにして、次のようにサブクエリを使用せずに、クエリの無にその値を再利用することができます。

SET @rep:= (Select rep.first_name FROM rep 
    inner JOIN customer ON rep.rep_num = customer.rep_num where customer.customer_num = 282);  

SELECT customer.customer_num, customer.customer_name, rep.first_name 
     FROM rep 
     JOIN customer ON rep.rep_num = customer.rep_num 
     WHERE rep.first_name = @rep; 

はそれが役に立てば幸い!

+0

単語がinavlidの構文であると言うと、 –

+0

が編集されています... –

+0

をチェックしてください。結果はデー​​タベースにありません –

0

部品表を移入します。

select customer.customer_num,customer.customer_name 
    from customer 
    where customer_id 
     in (SELECT rep_num 
       from rep,customer 
         where rep.rep_num = customer.rep_num 
         and customer_num = 282) 
+0

なぜcustomer_idをクエリに追加しましたか? –

関連する問題