0

My instructor wants me to use a subquery to do the following:

"Display the company name for any company that placed an order on or after Feb. 5, 2006."

So far I have:

SELECT customer_code
FROM orders
WHERE order_date > '2006-02-05'; 

This produces the results, but it's not with a subquery. How can I display this with a subquery?

4

2 に答える 2

0

これを試して:

SELECT company_name FROM customers
WHERE id IN 
(SELECT customer_code FROM orders
 WHERE order_date > '2006-02-05'); 

サブクエリは、order_date が 2006-02-05 より後の order テーブルから customer_code を選択します。次にこれを使用して、customers テーブルから company_name を選択します。WHERE ID はサブクエリで見つかります。

他にも次の方法があります。

SELECT company_name 
FROM orders, customers
WHERE customer_code = customers.id 
and order_date > '2006-02-05';


SELECT company_name 
FROM customers
JOIN ORDERS
ON customer_code = customers.id 
AND order_date > '2006-02-05'; 


SELECT company_name 
FROM customers
JOIN ORDERS
ON customer_code = customers.id 
WHERE  order_date > '2006-02-05';

最後のクエリにはサブクエリがありません。結合を使用するオプションは、おそらく最も一般的な形式です。 SQL フィドルのデモ

于 2013-02-20T02:52:25.863 に答える
0

customer_code特定の注文のを取得するクエリがあります。customer_codeしかし、今度は、これらの 'sを持つすべての顧客の名前も取得する必要があります。ここにいくつかのヒントがあります。

  1. 顧客の名前だけを持っている場合、どのようにして顧客の名前を取得しますcustomer_codeか? 注文とは関係なく、独自の単純なクエリとして記述します。

  2. 複数の顧客がいる場合、どうすれば顧客の名前を取得できますcustomer_codeか? これを行うには、クエリを #1 から変更します。

  3. 最後に、customer_codeさまざまな注文に対して (質問から) たくさんの を取得するクエリが既にあるので、customer_codes#2 の代わりにそのクエリを使用します。あなたの質問からのクエリは、サブクエリになります。

JOIN を使用して同じ出力を実現することもできますが、具体的にはサブクエリについて尋ねたことに注意してください。

于 2013-02-19T17:37:37.743 に答える