看板 Database 關於我們 聯絡資訊
※ 引述《bobju (寶貝豬)》之銘言: : ※ 引述《icefanatic (下雨天...)》之銘言: : : 請問板上高手~ : : 我使用的是access : : 假設table有c_id,product,s_date : : 想要找出此客戶買某產品的最小日期(客戶與產品會重覆) : : 我的query是SELECT sale.c_id,sale.product,test.s_date : : FROM sale INNER JOIN (SELECT c_id,MIN(s_date) FROM sale : : GROUP BY c_id) AS test : : on sale.c_id=test.c_id AND sale.s_date=test.s_date; : : 濾出的data會有遺漏的現象,例:查詢過後某些客戶或是產品會不見? : : 請問是哪裡有問題呢? : : 謝謝! : 舉例來看: : sale: id c_id product s_date : 1 1 'pa' '2009-10-10 20:00:00' : 2 1 'pb' '2009-10-11 21:00:00' : 3 1 'pc' '2009-10-12 22:00:00' : 那麼照上述sql的邏輯來看, 只會撈出 : 1,'pa','2009-10-10 20:00:00' , 而不會撈出 : 1,'pb','2009-10-11 21:00:00' 以及 : 1,'pc','2009-10-12 22:00:00' , : 所謂data遺漏是指這種情形? 若要data不會遺漏, 那麼 : 應該是 GROUP BY c_id,product 才是. : 不知有沒有會錯意? 感謝B大~ SELECT sale.c_id, sale.product, test.min_s_date FROM sale INNER JOIN (SELECT c_id,product, MIN(s_date) AS min_s_date ^^^^^^^ FROM sale GROUP BY c_id,product) AS test ^^^^^^^ on (sale.c_id=test.c_id) AND (sale.s_date=test.min_s_date) AND(sale.product=test.product); ^^^^^^^^^^^^^^^^^^^^^^^^^ query改成這樣,結果正是我要的~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.49.67
bobju:good luck ;) 10/20 16:58