Mysql - извлечение строки из таблицы соединений на основе значения из основной таблицы

0

У меня есть две таблицы в базе данных MySQL:

Обслуживание:

service_id |userid      | service_name | pending  | accepted|completed 
-----------+------------+--------------+----------+---------+--------
1          | 1          |  Spa         | 1        |0        |0
2          | 2          |  Cleaning    | 0        |1        |0
3          | 3          |  General     | 1        |0        |0

request_status: (id - первичный ключ)

id  |  service_id   | Userid |  status      | accepted_date 
----+---------------+--------+--------------+---------------
1   |  1            |  1     |  Pending     | 2018/03/02
2   |  2            |  2     |  Pending     | 2018/03/02
3   |  2            |  2     |  Accepted    | 2018/03/05
4   |  3            |  3     |  Pending     | 2018/03/06

ВЫХОД

service_id   | service_name | userid|  Status    | Date
-----------+----------------+-------+------------+------------+---------
1          | Spa            | 1     |  Pending   | 2018/03/02
2          | Cleaning       | 2     |  Accepted  | 2018/03/05
3          | General        | 3     |  Pending   | 2018/03/06

Для каждого пользователя службы выберите, статус будет обновлен в другом состоянии запроса таблицы.

Я хочу, чтобы результат был присоединен к двум таблицам, для каждой службы - статус. Например. Для служебного идентификатора 2 его принято, поэтому он имеет 2 записи во второй таблице. Я попробовал с присоединением, но он забирал как ожидающие, так и принятые для службы 2, которые должны отображать только один.

SELECT a.*, b.* FROM service a left outer join request_statusb on a.service_id =b.service_id

Как это сделать.? любая помощь Пожалуйста

  • 1
    Вы ищете JOIN . Вы уже пробовали что-нибудь в этом отношении?
  • 1
    Вы должны хотя бы попробовать что-то или опубликовать то, что вы придумали.
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Попробуй это

SELECT a.*, b.* 
FROM service a 
INNER JOIN request_status b ON a.service_id = b.service_id 
WHERE b.id = (SELECT max(id) FROM request_status rs WHERE rs.service_id = a.service_id)
  • 0
    Большое спасибо. Это идеально

Ещё вопросы

Сообщество Overcoder
Наверх
Меню