查看積分策略說明發表回覆
Discuz! 代碼
提示插入
直接插入
說明訊息

插入粗體文本 插入斜體文本 插入下劃線 置中對齊 插入超級連結 插入信件位址 插入圖像 插入 flash 插入代碼 插入引言 插入列表
刪除線 直線分隔線 虛線分隔線
    
添加文字底框
內容 [字數檢查]:

表情符號

更多 Smilies
字型大小 |||
溫馨提示:本區開放遊客瀏覽。


文章關鍵字 : [功能說明]
(關鍵字可加強搜索準確性, 如關鍵字多於一組, 請以 , 作分隔, e.g. : 阿笨,shiuh,第一笨)

 關閉 URL 識別 | html 禁用
 關閉 表情符號 | 表情符號 可用
 關閉 Discuz! 代碼 | Discuz! 代碼 可用
使用個人簽名
接收新回覆信件通知
推薦放檔網絡空間

檔案(Torent, zip等)
  1. freedl
  2. multiupload
  3. btghost
  4. 便當狗
  5. mediafire
  6. pillowangel
圖片(JPG, GIF等)
  1. hotimg
  2. tinypic
  3. mousems2
  4. imageshack
  5. imm.io
>>>歡迎推薦好用空間


最新10篇文章回顧
ma1111

 發表於 2011-5-18 11:35 AM

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


yfan

 發表於 2011-5-18 06:55 AM

select A.*

from A

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


chourain

 發表於 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的所有資料


akbarchinaman

 發表於 2011-4-2 03:35 PM

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


bobbook

 發表於 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 作了最後編輯]


dayi

 發表於 2011-3-28 10:55 PM

這很簡單啊

提示
用left, right
不要用inner


aaronwang

 發表於 2011-3-28 10:16 PM

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


vivi123456

 發表於 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.收費紀錄,'') = ''


bobbook

 發表於 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 作了最後編輯]


shinnuei

 發表於 2011-3-28 05:39 PM

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

不知道對不對





所在時區為 GMT+8, 現在時間是 2024-4-28 03:42 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.019489 second(s), 7 queries , Qzip disabled