推 bobju:good luck ;) 10/20 16:58
※ 引述《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