機房收費系統之組合查詢BUG

2021-12-30 03:41:04 字數 1345 閱讀 2065

宣告:以下內容只對在學生上機記錄查詢(組合查詢)只查詢已下機記錄,操作員工作記錄(組合查詢)只查詢已登出記錄的同學適用!

在機房收費系統中有三個組合查詢:學生基本資訊查詢、學生上機記錄查詢、操作員工作記錄查詢;其中的學生上機記錄查詢,我個人認為應該只查詢出已經下機的記錄,正在上機的記錄不應該被查詢出來;操作員工作記錄也是同樣的。

如果你跟我也是一樣的想法,那就接著看看我們的實現方式是否一樣吧:組合查詢的sql語句都是拼接字串拼出來的,但是我們拼出來的正確嗎?

第一種方法:

第二種方法:

一樣的資料,一樣的組合查詢卻出來了不同的查詢結果?怎麼會這樣呢?肯定是我們自己的問題。我們都知道在組合查詢中的sql查詢語句是乙個個條件拼接出來的,但是我們拼接的到底正確不正確呢?

第一種拼接:

select * from t_line where status !='正在上機' and cardno >'0' or cardno < '5'

第二種拼接:

select * from (select * from t_line where status!='正在上機')as t_line where cardno > '0' or cardno < '5'

對於第一種拼接,就是特別簡單的在後面加乙個條件進行拼接,我相信一定有人跟我犯過同樣的錯誤哦!其實只要我們把sql語句寫出來,就能很容易的看見自己錯在什麼地方:如果所有的條件之間都是用「and」連線,也能查詢出正確的結果,但是,當我們用「or」連線條件的時候呢?

對於第二種拼接,首先是用乙個子查詢查詢出滿足「已下機」這個條件的結果作為乙個臨時變,然後再從這個臨時表中查詢我們想要查詢的資料,這樣,不管後面的條件是「and」還是「or」都不會查詢出正在上機的記錄。

機房收費系統之 組合查詢

總是把它想象的很難。所以才會畏懼。其實只要邏輯清晰,就好了。private function fieldname strfieldname as string as string 將程式的字對應為資料庫 select case strfieldname case 卡號 fieldname cardn...

機房收費系統之組合查詢

前言 組合查詢是機房的另乙個重點 涉及到的窗體有 學生基本資訊維護 學生上機資訊統計 操作員工作記錄。邏輯 問題及重點 1.呼叫函式的目的是使得漢字與表中字段進行轉化 例 sql語句的姓名應該是student name,而 中新增的是文字 combo3.additem 姓名 通過函式可以將兩者進行轉...

機房收費系統 組合查詢

機房收費系統在磕磕絆絆中過來了,這期間遇到問題,解決問題,最後收穫的特別多,在敲得過程中,不斷的學習新知識,應該說組合查詢是收費系統的乙個小難點了吧,起初我是真的不知道該從 下手,總是有種剪不斷理還亂的感覺,分析分析就繞進去了,我總是把問題想的很複雜,其實只要一句 語句,一切都解決了,根本用不到好多...