Получить последние значения из таблицы, используя php и mysql - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть приведенная ниже структура таблицы sql, и я пытаюсь получить значения из 2 таблиц, используя codeigniter.

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 из таблицы продавца и получить самое последнее название продукта, отправленное и purchase_date оттаблица sales_report?

например:

   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

Ответы [ 3 ]

0 голосов
/ 01 декабря 2011

Вам необходимо использовать SELECT значения из sales_report, LEFT JOIN salesman, чтобы получить sales_name и ref_id, ORDER BY purchased_date (DESC, чтобы сначала получить самый последний, а не самый старый вначале), и GROUP BY salesman.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 голосов
/ 01 декабря 2011

Вы должны найти последний товар по двум критериям: по дате его продажи и по его идентификатору;потому что некоторые продукты могут быть проданы за один день.Итак, попробуйте это -

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;
0 голосов
/ 01 декабря 2011

Использование

GROUP BY

ЗАКАЗАТЬ ПО

за это сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...