SQL解惑 謎題8 排程印表機

2021-08-11 01:19:12 字數 4217 閱讀 4157

解惑一:

create

table

printercontrol (

user_id_start

char(10

)not

null,

user_id_finish

char(10

)not

null,

printer_name

char(4

)not

null,

printer_description

char(40

)not

null,

primary

key(

user_id_start

,user_id_finish)

) insert

into

printercontrol

(user_id_start

,user_id_finish

,printer_name

,printer_description)

values (

'chacha'

,'chacha'

,'lpt1'

,'first floor''s printer'),

('lee'

,'lee'

,'lpt2'

,'seceond floor''s printer'),

('thomas'

,'thomas'

,'lpt3'

,'common printer #1'),

('aaaaaaaa'

,'mzzzzzzz'

,'lpt4'

,'common printer #1'),

('naaaaaaa'

,'zzzzzzzz'

,'lpt5'

,'common printer #2')

begin

declare

@my_user_id

char(10

) select

min(

printer_name)

from

printercontrol

where

@my_user_id

between

user_id_start

anduser_id_start

end解惑二:

create

table

printercontrol (

user_id_1

char(10

), printer_name

char(4

)not

null

primary

key,

printer_description

char(40

)not

null )

insert

into

printercontrol

(user_id_1

,printer_name

,printer_description)

values (

'chacha'

,'lpt1'

,'first floor''s printer'),

('lee'

,'lpt2'

,'seceond floor''s printer'),

('thomas'

,'lpt3'

,'common printer #1'),

(null,

'lpt4'

,'common printer #1'),

(null,

'lpt5'

,'common printer #2')

使用 coalesce

函式來進行判斷,如果不為空則執行語句,獲取user_id中不為空的最小型號的印表機。

begin

declare

@my_user_id

char(10

) select

coalesce

(min

(printer_name),

(select

min(

printer_name)

from

printercontrol

asp2

where

user_id_1

isnull))

from

printercontrol

asp1

where

user_id_1

=@my_user_id

end

解惑三:

begin

declare

@my_user_id

char(30

) select

coalesce

(min

(printer_name),

(select

distinct

case

when

@my_user_id

<

'n'

then

'lpt4'

else

'lpt5'

end))

from

printercontrol

where

user_id_1

=@my_user_id

end由於case語句固定了沒有在使用的印表機,一旦使用則會無法查詢到。

解惑四:

create

table

printercontrol (

user_id_1

char(10

), printer_name

char(4

)not

null

primary

key,

assignable_flag

char(1

)default

'y'not

null

check

(assignable_flagin(

'y',

'n')),

printer_decription

char(40

)not

null )

insert

into

printercontrol

(user_id_1

,printer_name

,printer_decription

,assignable_flag)

values (

'chacha'

,'lpt1'

,'first floor''s printer'

,'n'),

('lee'

,'lpt2'

,'seceond floor''s printer'

,'n'),

('thomas'

,'lpt3'

,'common printer #1'

,'n'),

(null,

'lpt4'

,'common printer #1'

,'y'),

(null,

'lpt5'

,'common printer #2'

,'y')

更新標誌為y設定use_id 為最新id

begin

declare

@my_user_id

char(10

) update

printercontrol

setuser_id_1

=@my_user_id

where

printer_name =

(select

min(

printer_name)

from

printercontrol

where

assignable_flag

='y'

anduser_id_1

isnull)

end清空所有標誌為y的印表機

update

printercontrol

setuser_id_1

=null

where

assignable_flag

='y'

win8怎麼安裝印表機驅動

win8怎麼安裝印表機驅動 1 系統下同時按住鍵盤上 windows 和 x 鍵開啟系統選單 選擇 控制面板 2 開啟 控制面板 選擇 檢視裝置和印表機 3 選擇 高階印表機設定 4 搜尋已連線的可用的印表機,點選 我需要的印表機不在列表中 下一步 5 選擇 通過手動設定新增本地印表機或網路印表機 ...

HP 5100印表機在Windows 8中的使用

前幾天將作業系統由windows 8 企業版 64位 公升級到windows 8.1的企業版後,系統總有一些小問題。今天使用印表機的時候,出錯,無論列印影象還是文字,都在紙上列印出以下內容 pcl xl error subsystem image error illegalattributevalu...

8個3D印表機方案,低成本創造DIY的更多可能性

3d列印通常是採用數字技術材料印表機來實現的。常在模具製造 工業設計等領域被用於製造模型,後逐漸用於一些產品的直接製造,已經有使用這種技術列印而成的零部件。3d印表機給電子發燒友提供了更多的便捷和可能,擁有一台3d印表機是diy愛好者的夢想,下面8個方案幫你實現夢想。1 低成本3d印表機,教你打造乙...