2011-12-01 59 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; 
相關問題