RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [DB] SQL 2008查詢條件的問題 修改問題   字型大小:||| 
bobbook
銀驢友〔中級〕
等級: 13等級: 13等級: 13等級: 13
啊 廢業黑化了...... 斯 壞掉了(゚Д゚ )

十週年紀念徽章(五級)  

今日心情

 . 積分: 664
 . 文章: 979
 . 收花: 5871 支
 . 送花: 5823 支
 . 比例: 0.99
 . 在線: 4923 小時
 . 瀏覽: 29696 頁
 . 註冊: 7211
 . 失蹤: 1206
 . 地球 亞洲 台灣
#1 : 2011-3-28 01:45 PM     只看本作者 引言回覆

2011-03-29

總算解決了

TIPS

left join:       返回「表名1」的全部行,對於「表名2」中,不滿足on條件的記錄用空值替換。
rigth join:     返回「表名2」的全部行,對於「表名1」中,不滿足on條件的記錄用空值替換。

設定指定欄位 ISNULL查詢即可

2011-03-29

哈哈哈哈哈哈哈哈
寫程式寫太多阿達了
居然連敘述問題也敘述錯  抱歉

大家  
好久不見
廢業目前在一家NPO做MIS

目前被荼毒中......

OK...廢話不多說
這是這幾天廢業被荼毒的原因

目前有兩個TableA以及TableB

TableA紀錄訂單編號、數量、下訂日期......等等
TableB則紀錄訂單A.訂單編號的收費紀錄(如實收訂金以及實收租金......等等)

現在大頭出了一個問題
他要列出訂單編號、數量、下訂日期......等等條件作為查詢依據下
SQL如下(舉例)
SELECT dbo.TableA.*, dbo.TableB.* FROM dbo.TableA INNER JOIN dbo.TableB ON dbo.TableA.訂單編號 = dbo.TableB.訂單編號 WHERE + 程式的搜尋條件

大頭目前要在這個搜尋條件下
列出哪一筆訂單沒有收費紀錄

也就是在同一筆TableA的訂單編號下找TableA以及TableB中"TableA.訂單編號" <> EOF AND  "TableB.訂單編號" = EOF的條件下
列出所有TableA的的資料

這我要如何做呀

[bobbook 在  2011-3-29 11:00 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
shinnuei
青銅驢友
等級: 11等級: 11等級: 11等級: 11


今日心情

 . 積分: 272
 . 文章: 384
 . 收花: 1796 支
 . 送花: 481 支
 . 比例: 0.27
 . 在線: 2949 小時
 . 瀏覽: 76000 頁
 . 註冊: 7084
 . 失蹤: 564
 . 台灣
#2 : 2011-3-28 05:39 PM     只看本作者 引言回覆

where  a.訂單編號 = 條件值 and a.數量 = 條件值 and a.下訂日期 = 條件值
AND B.收費紀錄 = NULL

不知道對不對



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
bobbook
銀驢友〔中級〕
等級: 13等級: 13等級: 13等級: 13
啊 廢業黑化了...... 斯 壞掉了(゚Д゚ )

十週年紀念徽章(五級)  

今日心情

 . 積分: 664
 . 文章: 979
 . 收花: 5871 支
 . 送花: 5823 支
 . 比例: 0.99
 . 在線: 4923 小時
 . 瀏覽: 29696 頁
 . 註冊: 7211
 . 失蹤: 1206
 . 地球 亞洲 台灣
#3 : 2011-3-28 05:43 PM     只看本作者 引言回覆


引用:
shinnuei寫到:
where  a.訂單編號 = 條件值 and a.數量 = 條件值 and a.下訂日期 = 條件值
AND B.收費紀錄 = NULL

不知道對不對


這個我試過了
得到的結果都是NULL
最主要是因為"B.收費紀錄 = NULL"

原因是大頭在作系統分析的時候設定
產生訂單不會對TableB有影響
除非交訂金或交租金

哈哈哈哈哈哈哈哈哈哈哈哈哈哈    淚流滿面中......

另外我有嘗試使用

[SQL 語句 1]
MINUS
[SQL 語句 2]

結果還是被打槍
SQL 2008里面把它當作兩個查詢條件來看
快哭死了

目前在跟大頭裝死......

[bobbook 在  2011-3-28 05:47 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
vivi123456
驢有所悟
等級: 3等級: 3


 . 積分: 16
 . 文章: 14
 . 收花: 23 支
 . 送花: 169 支
 . 比例: 7.35
 . 在線: 2029 小時
 . 瀏覽: 13293 頁
 . 註冊: 7193
 . 失蹤: 1167
#4 : 2011-3-28 08:00 PM     只看本作者 引言回覆

試試看吧
SELECT dbo.TableA.*, dbo.TableB.*
   FROM dbo.TableA
  INNER JOIN dbo.TableB ON dbo.TableA.訂單編號 = dbo.TableB.訂單編號
WHERE dbo.TableA.訂單編號 = 條件
     AND dbo.TableA.數量 = 條件
     AND dbo.TableA.下訂日期 = 條件值
     AND ISNULL(dbo.TableB.收費紀錄,'') = ''



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
aaronwang
鐵驢友〔初級〕
等級: 4
邪惡男

今日心情

 . 積分: 23
 . 文章: 64
 . 收花: 181 支
 . 送花: 27 支
 . 比例: 0.15
 . 在線: 119 小時
 . 瀏覽: 760 頁
 . 註冊: 7212
 . 失蹤: 1187
 . 亞利安星球
#5 : 2011-3-28 10:16 PM     只看本作者 引言回覆

應該是 TableB.收費紀錄 is NULL 不是 TableB.收費紀錄 = NULL


[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  訪問主頁  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
dayi
開墾隊隊員
等級: 14等級: 14等級: 14等級: 14
ZeroX

十週年紀念徽章(五級)  

今日心情

 . 積分: 935
 . 文章: 2060
 . 收花: 7802 支
 . 送花: 2401 支
 . 比例: 0.31
 . 在線: 2821 小時
 . 瀏覽: 61582 頁
 . 註冊: 6891
 . 失蹤: 990
 . ZeroX
#6 : 2011-3-28 10:55 PM     只看本作者 引言回覆

這很簡單啊

提示
用left, right
不要用inner



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
bobbook
銀驢友〔中級〕
等級: 13等級: 13等級: 13等級: 13
啊 廢業黑化了...... 斯 壞掉了(゚Д゚ )

十週年紀念徽章(五級)  

今日心情

 . 積分: 664
 . 文章: 979
 . 收花: 5871 支
 . 送花: 5823 支
 . 比例: 0.99
 . 在線: 4923 小時
 . 瀏覽: 29696 頁
 . 註冊: 7211
 . 失蹤: 1206
 . 地球 亞洲 台灣
#7 : 2011-3-29 10:55 AM     只看本作者 引言回覆

感謝呀

我終於找到了

關鍵在於LEFT JOIN 以及TableB.訂單編號 ISNULL

目前在View底下已經可以找到正確的資料了

SQL

SELECT dbo.TableA.*,dbo.TableB.*
FROM dbo.TableA LEFT OUTER JOIN dbo.TableB ON dbo.TableA.訂單編號 = dbo.TableB.訂單編號
WHERE     (dbo.TableB.訂單編號 IS NULL)

總算可以把萬惡的不繳訂金以及租金的成員抓出來了

感謝各位的提醒以及解惑



TIPS

left join:       返回「表名1」的全部行,對於「表名2」中,不滿足on條件的記錄用空值替換。
rigth join:     返回「表名2」的全部行,對於「表名1」中,不滿足on條件的記錄用空值替換。

設定指定欄位 ISNULL查詢即可

[bobbook 在  2011-3-29 10:59 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
akbarchinaman
開墾隊隊員
等級: 9等級: 9等級: 9


 . 積分: 159
 . 文章: 550
 . 收花: 784 支
 . 送花: 676 支
 . 比例: 0.86
 . 在線: 4583 小時
 . 瀏覽: 47794 頁
 . 註冊: 7211
 . 失蹤: 434
#8 : 2011-4-2 03:35 PM     只看本作者 引言回覆

借用來問兩個問題:
1. 為什麼要用 Is NULL而不是 = NULL
2. SQL底下的萬用字元到底是%還是*?



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
chourain
驢有所悟
等級: 3等級: 3


今日心情

 . 積分: 12
 . 文章: 33
 . 收花: 48 支
 . 送花: 15 支
 . 比例: 0.31
 . 在線: 987 小時
 . 瀏覽: 6631 頁
 . 註冊: 6954
 . 失蹤: 1047
 . TW
#9 : 2011-4-4 11:49 PM     只看本作者 引言回覆


引用:
akbarchinaman寫到:
借用來問兩個問題:
1. 為什麼要用 Is NULL而不是 = NULL
2. SQL底下的萬用字元到底是%還是*?


1.null這個值,在SQL中算是特殊的資料,不是''(空白)也不是0,是一個空的欄位型態,也就是說,這個欄位資料是不存在的,所以不能用=或其他方式來比對出來,所以用 is null 或isnull() 內建的判斷才能比對.
2.就自己所了解%這個是用在做where判斷是的萬用字元.如
where aaa like '%tw' 表示 找出所有aaa欄位 最後二個字是 tw的資料如 12tw,abctw,tw都會給比對出來.
where aaa like '%tw%' 表示 找出所有aaa欄位 只要有tw這二個字的資料如 12tw,abctw,tw123,tw,abtwsdfasdf1都會給比對出來.
而* 是用來設定要顯示所有資料表中的欄位
官方說明:指定應該傳回 FROM 子句中所有資料表和檢視的所有資料行
select * from abc
傳回所有abc這個資料表的欄位資料
所以*和%在用法上是不同的.

select a.*,b.欄位1 from a
inner join b on a.欄位1=b.欄位1 where b.欄位1 like '%tw'
這是說.傳回.所以a資料表的欄位資料及b資料表的欄位1資料,並在資料中篩選出符合b.欄位1中最後二個字是tw的所有資料



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
yfan
鐵驢友〔初級〕
等級: 4


 . 積分: 23
 . 文章: 18
 . 收花: 25 支
 . 送花: 5 支
 . 比例: 0.2
 . 在線: 274 小時
 . 瀏覽: 20342 頁
 . 註冊: 6742
 . 失蹤: 79
 . USA
#10 : 2011-5-18 06:55 AM     只看本作者 引言回覆

select A.*

from A

where A.id not in
(
  select b.id from B where B.amount>0
)



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
ma1111
鐵驢友〔高級〕
等級: 6等級: 6


今日心情

 . 積分: 69
 . 文章: 450
 . 收花: 373 支
 . 送花: 396 支
 . 比例: 1.06
 . 在線: 658 小時
 . 瀏覽: 13766 頁
 . 註冊: 7523
 . 失蹤: 495
#11 : 2011-5-18 11:35 AM     只看本作者 引言回覆

設計schma時候,有些欄位特性一定會有值,請直接指定NOT NULL,
尤其是KEY Field,
否則app實作時,會多出很多特殊情況



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-3-28 10:30 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.027484 second(s), 6 queries , Qzip disabled