,謝謝現在我們有這樣乙個需求
查詢所有使用者的使用者姓名,**,訂單號,已經訂單狀態,商品所屬分類名稱
其實我們這些資料**於兩張表
圖書表es_product和圖書類別表es_sort
我們可以通過表連線實現
select es_product.id,name,price,sortname from es_product,es_sort where es_product.sort_id=es_sort.id and es_sortname='圖書'
或者select a.id,a.name,a.price,b.sortname from es_product a,es_sort b where a.sort_id =b.id and b.sortname='圖書'
那什麼時候用子查詢,什麼時候用表查詢呢
其實子查詢並不要求兩個表有相關字段,只要得到子查詢的結果結果集就可以,用於父查詢。
而連線查詢,則必須要求兩個表有相關的字段。當查詢的列來自於多個表時,可以使用表連線查詢
其中表連線包括以下連線
非等值連線示例如下;
另外乙個需求如下
查詢所有使用者的**,姓名,訂單號,訂購日期以及訂單狀態
使用這樣乙個內連線就是錯誤的,因為
它只是顯示了下過訂單的使用者資料,而沒下過訂單的就漏掉了
也就是說當不滿足條件的列也要顯示處理。
只限制其中乙個表的行,而不限制另外乙個表的行時使用外連線
在oracle中使用+來表示外連線是最常見的寫法
達到上述需求我們可以這樣書寫
select a.realname,b.tel,b.id,createtime,status from es_user a leef outer join es_order b on a.id=b.user_id
還可以這樣寫
select a.realname,b.tel,b.id,createtime,status from es_user a,es_order b where a.id =b.user_id(+)
當左表存在這條記錄,而右表不匹配的時候
而右連線是以右表來匹配
這個時候也可以寫+,不過這個時候的+應該寫在條件的左邊了
oracle資料庫(三) 高階查詢
根據員工的上級編號進行層級關聯 select level empno,ename,mgr from emp connect by prior empno mgr start with mgr is null order bylevel translate expr,from string,to st...
實驗三 連線查詢
1 查詢每個學生的資訊及其選修課程的資訊,寫出sql語句和貼上執行輸出結果的截圖 2 用自身連線方式查詢表courses中和課程 c 的課時數 hour 相同的課程資訊,寫出sql語句和貼上執行輸出結果的截圖 3 用左外連線方式查詢每個學生的資訊及其選修課程的資訊,寫出sql語句和貼上執行輸出結果的...
Oracle資料庫 高階子查詢
子查詢是巢狀在sql與劇中的另乙個select語句 子查詢 內查詢 在主查詢執行之前執行 主查詢 外查詢 使用子查詢的結果 查詢工資大於149號員工工資的員工的資訊 主查詢與子查詢返回的多個列進行比較 多列子查詢中的比較分為兩種 查詢與141號或174號員工的manager id和departmen...