[SQL ] 呃 ... 這一句 SQL 我寫了一個下午

看板Database作者 (骨傲風清(掛網))時間15年前 (2010/09/03 18:51), 編輯推噓5(500)
留言5則, 5人參與, 最新討論串1/1
C# 加上 Access ,由於為了符合對方奇怪的列表, 再加上自己又有點懶,所以正規化沒有做的非常徹底, 於是為了顯示某列表結果 ... 寫了一個下午的 SQL指令。 其實也就只有 `record`, `person`, `pay`, `rate` 四張表跑來跑去而已 XD" 我只是想來說,放在螢幕中間還頗有美感的 XD" string sqlStr = "SELECT DISTINCT `time`, `name`, `record`.`number`, " + "(SELECT COUNT(*) FROM `person` WHERE `record_id`=`record`.`id`), " + "(SELECT COUNT(*) FROM `person` WHERE `record_id`=`record`.`id` AND `id` IN "+ "(SELECT DISTINCT `person_id` FROM `pay` WHERE `person_id` = `person`.`id` " + " AND `i_nt` > 0 OR i_money > 0)), (SELECT COUNT(*) FROM `person` WHERE " + "`record_id`=`record`.`id` AND `id` IN (SELECT DISTINCT `person_id` " + " FROM `pay` WHERE `person_id` = `person`.`id` AND `i_bill` > 0)), " + "(SELECT COUNT(*) FROM `person` WHERE `record_id`=`record`.`id` AND " + "`id` IN (SELECT DISTINCT `person_id` FROM `pay` WHERE " + "`person_id` = `person`.`id` AND `i_nt` > 0 OR `i_money`>0 OR `i_card`>0))," + "(SELECT SUM(`i_nt`) FROM `pay` WHERE `person_id` IN (SELECT `id` FROM " + "`person` WHERE `record_id` = `record`.`id`))+(SELECT " + "SUM(`i_money`*`rate`.`rate`) FROM `pay` LEFT JOIN `rate` ON " + "`pay`.`i_money_id`=`rate`.`money_id` WHERE `i_money` > 0 AND " + " FORMAT(`rate`.`date`, 'yyyymmdd')=FORMAT(`record`.`time`, 'yyyymmdd') AND " + "`person_id` IN (SELECT `id` FROM `person` WHERE `record_id` =`record`.`id`))"+ ", `record`.`note` FROM `record` LEFT JOIN `customer` ON " + " `customer`.`id`=`record`.`customer_id` WHERE `travel_id` <> 0 AND `time` >= #"+ year.ToString() + "/" + month.ToString() + "/1# AND " + "`time` < #" + dateTimePicker1.Value.AddMonths(1).Year.ToString() + "/" + dateTimePicker1.Value.AddMonths(1).Month.ToString() + "/1# ORDER BY `time`"; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.101.9.24

09/03 21:24, , 1F
這種寫法不好維護,日後欄位變動要改語法可能會辛苦.
09/03 21:24, 1F

09/06 19:18, , 2F
帥啊XDDD
09/06 19:18, 2F

09/06 20:50, , 3F
藝術品啊...不過被後輩幹譙的可能性...
09/06 20:50, 3F

09/08 18:59, , 4F
這麼多Sub Query?
09/08 18:59, 4F

09/18 02:54, , 5F
這整段執行起來不會很慢嗎?........
09/18 02:54, 5F
文章代碼(AID): #1CWDCRTg (Database)