㈠ 訂單列表查詢sql,查詢出訂單的數量和訂單詳細信息(包括訂單中的所有商品)。
select m.訂單編號,m.訂單總額 , d.商品名稱 , d.商品單價
from order_t m,order_good_t d
where m.訂單編號 = d.訂單編號
(1)sql查詢多個訂單擴展閱讀:
SQL中最常見的操作(查詢)使用聲明性SELECT語句。 SELECT從一個或多個表或表達式中檢索數據。標准SELECT語句對資料庫沒有持久影響。 SELECT的一些非標准實現可以具有持久性效果,例如某些資料庫中提供的SELECT INTO語法。
WHERE子句包含比較謂詞,它限制查詢返回的行。 WHERE子句從結果集中刪除比較謂詞未計算為True的所有行。
GROUP BY子句將具有公共值的行投影到較小的行集中。 GROUP BY通常與SQL聚合函數結合使用,或者從結果集中消除重復的行。 WHERE子句在GROUP BY子句之前應用。
㈡ SQL 子查詢
所謂 SQL 子查詢就是嵌套在其他查詢中的查詢。子查詢通常用於 WHERE 子句的 IN 操作符中進行過濾,以及用來填充計算列。下面我們從這兩種使用場景展開學習。
本節涉及到關系表如下:
最上方的訂單表 Orders 存儲了訂單 ID 、訂單日期以及顧客 ID ;具體的訂單信息存儲在 OrderItems 表中,通過 order_num 進行關聯;具體的顧客信息存儲在顧客表 Customers 中,通過 cust_id 欄位進行關聯。
下面,假設我們需要檢索出購買了 RGA01 產品的所有顧客信息,應該怎麼做呢?
首先,我們只列出步驟:
接下來,我們來完成第一步:
包含了產品 RGAN01 的訂單編號:
有了訂單編號,就可以從訂單表檢索出顧客 ID 了:
運行結果:
接下來,我們來合並上面的兩步:把第一個查詢變為子查詢,放在 WHERE 語句的 IN 操作符之後:
運行結果和上述第二步獲得的結果是一樣的:
在 SELECT 語句中子查詢從內向外處理:首先執行 SELECT order_num FROM OrderItems WHERE prod_id = 'RGAN01' 子查詢,將返回的訂單號作為 IN 操作符的參數,執行外部查詢: SELECT cust_id FROM Orders WHERE order_num IN ( 20007, 20008 ); 。
最後,我們來看第三步,根據顧客 ID 檢索出顧客相關信息。
運行結果:
同理,我們可以將上述的 WHERE 子句替換為子查詢:
至此,我們的檢索任務就完成了:查詢購買了 RGAN01 商品的所有顧客姓名及聯系方式。
子查詢的另一個使用場景為創建計算欄位。同樣,我們以一個案例來學習:檢索每個顧客的訂單的總數。
顧客表與訂單表是一對多的關系,即一個顧客對應多個訂單,但一個訂單只對應一個顧客。
如下的 SQL 檢索出顧客 1000000001 的訂單數:
要對每個顧客的訂單計數,應該將其作為子查詢:
運行結果:
上述 SQL 對 Customers 表中每個顧客返回三列: cust_name cust_state 和 orders 。其中 orders 為子查詢創建的計算欄位,該子查詢對檢索出的每個顧客都執行一次,一共執行了 6 次子查詢。
在子查詢的條件中,我們使用了表的完全限定列名 Orders.cust_id = Customers.cust_id ,這是因為 Orders 表和 Customers 表中包含了欄位名名稱相同的列。
本節我們學習了在 SELECT 語句中使用子查詢的兩種用法:將子查詢應用於 WHERE 子句的 IN 操作符中,進行條件過濾,以及用子查詢創建計算欄位。
子查詢的檢索效率不夠理想,下一篇文章中小魚將和大家展開聯結表的學習~ 連接表 是數據檢索的精華和重點,我們拭目以待吧!
㈢ SQL-查詢上海和北京的客戶在1996年訂購的所有訂單的訂單ID,所訂購的產品名稱和數量
select 訂單明細.數量,產品名稱,訂單.訂單ID,城市
from 訂單明細,產品,訂單,客戶
where 城市 IN('上海','北京')and 訂購日期 ='1996'
首先 這些表需要連接么? 再是訂購日期 是什麼類型,他就是表示整年的么?
如果這些你都寫對的話,那麼
你把這條SQL分為兩部分執行:
select 訂單明細.數量,產品名稱,訂單.訂單ID,城市
from 訂單明細,產品,訂單,客戶
where 城市 IN('上海','北京')select 訂單明細.數量,產品名稱,訂單.訂單ID,城市
from 訂單明細,產品,訂單,客戶
where 訂購日期 ='1996'
再分別看裡面的數據是否存在!
㈣ 如何使用SQL語句在一個表中查詢: 同一個人購買兩個以上相同產品的記錄要求顯示所有符合條件的人.
select SaleID,GoodsID from Table
group by SaleID,GoodsID
例如:
select f1,f2,...,fn
from table
group by f1,f2,...,fn
having count(1)>1 查出存在相同的f1,f2,..,fn
想查找出記錄則
select t1.* from table t1
(4)sql查詢多個訂單擴展閱讀:
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like 』%value1%』 (所有包含『value1』這個模式的字元串)
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
㈤ 要查詢很多個訂單,每個訂單里有很多個商品,應該怎麼處理,查詢結果是放在Map還是List里,應該怎麼放
首先你的訂單表是怎麼設計的。
商品表肯定是商品id,商品名稱等信息,絕對不會有訂單id在商品表。
訂單表有這樣的設計方式,訂單id,商品id。唯一值肯定不是訂單id,可以設置為自增列。一行數據只放一個商品id。相當於一個訂單id有多行數據。
那這樣就很簡單了。
你點擊某個訂單查看裡面詳情的時候,點擊事件傳的肯定是訂單id。然後在訂單表裡面加where條件,把該訂單所有數據查找出來,然後在關聯商品表,例如下面sql:
select * from dingdan dd
left join shangpin sp on sp.商品id=dd.商品id
where dingdanID='訂單號1'
至於你要把這個sql結果集放到什麼裡面,list,還是dataset,還是datatable就由你決定了。
㈥ 查詢一個商品有幾個訂單的SQL語句
select Name, count(Name) from SP group by Name
或者
select Name, sum(訂單金額欄位) from SP group by Name
㈦ 怎麼用sql語句查詢歷史訂單量
selecttop(5000)substring(convert(varchar(30),TransactionTime,20),1,11)日期,count(*)as數量fromdbo.Ledger
groupbysubstring(convert(varchar(30),TransactionTime,20),1,11)
substring(convert(varchar(30),TransactionTime,20),1,10)
最後的參數11改為10
㈧ SQL的一些查詢語句
--1、列出訂單明細表中訂單ID列表,要求去掉所有重復值。
SELECT DISTINCT 訂單ID FROM 訂單明細
--2、列出產品的最高庫存量、最低庫存量和平均庫存量
SELECT MAX(庫存量) 最高庫存量,MIN(庫存量) 最低庫存量,AVG(庫存量) 平均庫存量 FROM 產品
--3、統計訂單數量。
SELECT COUNT(*) 訂單數量 FROM 訂單
--4、按貨主地區統計訂單數量。
SELECT 貨主地區,COUNT(*) 訂單數量 FROM 訂單 GROUP BY 貨主地區
--5、列出所有訂閱大米的客戶名稱。
SELECT 公司名稱 AS 客戶名稱 FROM 客戶 JOIN 訂單 ON 客戶.客戶ID=訂單.客戶ID
JOIN 訂單明細 ON 訂單明細.訂單ID=訂單.訂單ID
JOIN 產品 ON 產品.產品ID=訂單明細.訂單ID
WHERE 產品名稱='大米'
--6、列出庫中的所有訂單的客戶ID,產品ID和發貨日期。
SELECT 客戶ID,產品ID,發貨日期 FROM 訂單 JOIN 訂單明細 ON 訂單明細.訂單ID=訂單.訂單ID
--7、按發貨日期的順序,列出所有的所有訂單的客戶ID,產品ID。
SELECT 客戶ID,產品ID FROM 訂單 JOIN 訂單明細 ON 訂單明細.訂單ID=訂單.訂單ID
ORDER BY 發貨日期
--8、顯示供應商表中姓「徐」的聯系人的地址,城市,電話,公司名稱以及郵編。(用三種方法實現)
SELECT 地址,城市,電話,公司名稱,郵政編碼 FROM 客戶 WHERE 聯系人姓名 LIKE '徐%'
SELECT 地址,城市,電話,公司名稱,郵政編碼 FROM 客戶 WHERE LEFT(聯系人姓名,1)='徐'
SELECT 地址,城市,電話,公司名稱,郵政編碼 FROM 客戶 WHERE CHARINDEX('徐',聯系人姓名)>0
--9、 查找產品表中含有「米」的相關記錄。
SELECT * FROM 產品 WHERE 產品名稱 LIKE '%米%'
--10、在客戶表中查找電話號碼含有「010」的記錄。(至少用兩種方法實現)
SELECT * FROM 客戶 WHERE 電話 LIKE '%010%'
SELECT * FROM 客戶 WHERE CHARINDEX('010',電話)>0
--11、查找客戶「黃雅玲」所訂購的產品名稱,定購量,及該客戶的所在公司,職務,電話。
SELECT 產品名稱,數量,公司名稱,聯系人職務,電話 FROM 客戶 JOIN 訂單 ON 客戶.客戶ID=訂單.客戶ID
JOIN 訂單明細 ON 訂單明細.訂單ID=訂單.訂單ID
JOIN 產品 ON 產品.產品ID=訂單明細.訂單ID
WHERE 聯系人姓名='黃雅玲'
--12、統計客戶所訂購的訂單數,並顯示相應的客戶名,客戶ID,訂單數,並且根據訂單數進行升序排序。
SELECT 公司名稱 AS 客戶名,客戶ID,COUNT(*) 訂單數 FROM 客戶 JOIN 訂單 ON 客戶.客戶ID=訂單.客戶ID
ORDER BY 3