我的導師希望我使用子查詢來執行以下操作:MySQL:如何使用子查詢顯示特定日期後的訂單。
「顯示2006年2月5日或之後下訂單的任何公司的公司名稱。」
到目前爲止,我有:
SELECT customer_code FROM orders WHERE order_date > '2006-02-05';
這將產生的結果,但它不是一個子查詢。我怎樣才能用子查詢顯示這個?
我的導師希望我使用子查詢來執行以下操作:MySQL:如何使用子查詢顯示特定日期後的訂單。
「顯示2006年2月5日或之後下訂單的任何公司的公司名稱。」
到目前爲止,我有:
SELECT customer_code FROM orders WHERE order_date > '2006-02-05';
這將產生的結果,但它不是一個子查詢。我怎樣才能用子查詢顯示這個?
試試這個:
SELECT company_name FROM customers
WHERE id IN
(SELECT customer_code FROM orders
WHERE order_date > '2006-02-05');
子查詢選擇customer_code從訂單表,其中order_date的是2006-02-05之後。這然後用於選擇company_name FROM customers表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 FIDDLE DEMO
謝謝你,謝謝,這現在有很多意義!這個連接最初是唯一有意義的東西,我認爲我的問題是習慣了多層次的子查詢。再次感謝! – FionaCat86 2013-02-20 03:00:17
@ FionaCat86很高興我能幫上忙。您可以關閉/刪除您的重複問題。 – 2013-02-20 03:01:53
您有查詢會得到你customer_code
的某些訂單。但是現在您還需要獲得所有這些customer_code
的客戶的姓名。這裏有幾個小技巧,
你怎麼會得到客戶的名字,如果你有隻是他們customer_code
?把它寫成它自己的簡單查詢,與訂單無關。
現在如果你有多個customer_code
,你怎麼能得到客戶的名字?修改來自#1的查詢來執行此操作。
最後,您已經有了查詢以獲得很多customer_code
(來自您的問題)的各種訂單,因此請使用該查詢而不是#2中的customer_codes
。您的問題查詢變成子查詢。
請注意,您也可以使用JOIN實現相同的輸出,但是您特別提到了有關子查詢的問題。
不幸的是,我仍然不知道如何做到這一點。我所嘗試的一切都是以錯誤的形式出現的。我知道我需要使用子查詢以某種方式組合這兩個表,但沒有任何作用。有人可以幫幫我嗎? – FionaCat86 2013-02-20 01:51:48
提示:嘗試將客戶(或公司或客戶端)表中的查詢與查詢結合使用。 – Tom 2013-02-19 17:27:53
它不完全產生結果。公司名稱在哪裏? – mcalex 2013-02-19 17:32:28
公司'名稱'位於'客戶'表中。 – FionaCat86 2013-02-19 17:36:16