2011-12-01 61 views
0

我有下面的sql表结构,并试图从codeigniter的2表中获取值。从表中使用php和mysql抓取最新值

table: salesman 

id sales_name  ref_id 
1  kevin  174 
2  mike  574 
3  nick  777 


table: sales_report 

id salesman_id product  purchased_date  dispatched 
1 2    BF0214  04-November-2011  Yes 
2 2    CF0474  09-November-2011  No 
3 2    BF0111  10-November-2011  No 
4 3    BF0714  15-November-2011  Yes 
5 3    BF0435  15-November-2011  Yes 
6 2    BF0335  18-November-2011  Yes 
7 1    BF0714  22-November-2011  Yes 
8 1    BF0335  25-November-2011  Yes 

即时将salesman_id传递给模型以获取并显示我的视图中的值。

我的HTML表如下

Ref ID | Salesman Name | Last product Sold | Sold Date | Dispatched Status 

,即时通讯有怎样可以查询得到从业务员表sales_name和REF_ID并获得最新的产品名称的问题,发出的,从sales_report PURCHASE_DATE表?

如:

Ref ID | Salesman Name | Last product Sold | Sold Date   | Dispatched Status 
    174   kevin   BF0335   25-November-2011  Yes 
    574   mike    BF0335   18-November-2011  Yes 
    777   nick    BF0435   15-November-2011  Yes 

回答

0

使用

GROUP BY

ORDER BY

获得此做

0

您需要使用0123从个值,LEFT JOINsalesmansales_nameref_idORDER BY得到purchased_date(DESC以获取最新的一个第一,而不是最早的第一),和GROUP BYsalesman.id得到它只是每个业务员返回一行。

SELECT * FROM sales_report LEFT JOIN salesman ON sales_report.salesman_id = salesman.id ORDER BY purchased_date DESC GROUP BY salesman.id 
0

你应该找到两个criteras的最后一个产品:它的销售日期和它的id;因为有些产品可能在一天内出售。所以,试试这个 -

SELECT s.ref_id, s.sales_name, sr.product, sr.purchased_date, sr.dispatched FROM salesman s 
    JOIN (
    SELECT salesman_id, product, purchased_date, dispatched FROM (
     SELECT salesman_id, product, purchased_date, dispatched, IF(@salesman_id = salesman_id, @i := @i + 1, @i := 1) n, @salesman_id := salesman_id 
     FROM sales_report, (SELECT @i:= 0, @salesman_id = NULL) vars 
     ORDER BY salesman_id ASC, purchased_date DESC, id DESC) t 
    WHERE t.n = 1 
    ) sr 
    ON s.id = sr.salesman_id; 
相关问题