作者icefanatic (下雨天...)
看板Database
标题Re: [SQL ] 资料日期取最小值的问题
时间Tue Oct 20 15:09:24 2009
※ 引述《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
1F:推 bobju:good luck ;) 10/20 16:58