Сравните данные для 2 таблиц - PullRequest
0 голосов
/ 02 мая 2019

у меня есть 2 таблицы A и B, как показано ниже

Таблица A

+---------+--------+
|  query  | status |
+---------+--------+
| number1 | solved |
+---------+--------+

таблица B

+----+---------+---------+
| id |  query  | status  |
+----+---------+---------+
|  1 | number1 | started |
|  2 | number1 | working |
|  3 | number1 | solved  |
+----+---------+---------+

как проверить, соответствует ли последний статус таблицыB равно статусу таблицы A

Я пытался сначала получить последний статус для таблицы 2, но я не могу его получить

select number ,max(status),max(id) 
from Table B 
group by number 
order by max(id) asc 

Ответы [ 4 ]

0 голосов
/ 02 мая 2019

Что-то вроде

SELECT TA.query, TA.status AS current_status, TB.status AS Last_status, 
       (CASE WHEN TA.status=TB.status THEN 'OK' ELSE 'NOK' END) AS your_answer
FROM
TableA TA
INNER JOIN
    (
        SELECT query, MAX(ID) as max_id
        FROM TableB
        GROUP BY query
    ) TM ON TM.query=TA.query
INNER JOIN TableB TB ON TM.max_id = TB.id

Будет работать только в том случае, если ваш идентификатор в таблице B является своего рода увеличенным числом (самый высокий = последняя строка)

0 голосов
/ 02 мая 2019

Вот простое решение, основанное на сортировке по ID и получении только первой строки в подзапросе. Он будет возвращать только те строки, которые совпадают между двумя таблицами.

SELECT a.* 
FROM tableA a
JOIN (SELECT query, status 
      FROM tableB
      ORDER BY ID desc 
      LIMIT 1) b ON a.query = b.query AND a.status = b.status
0 голосов
/ 02 мая 2019

использовать объединение и подзапрос

select a.* from
 tablea a join
(
select * from table_name t1
where id =( select max(id) from table_name t2 where t1.query=t2.query)
) b join on a.query=b.query and a.status=b.status
0 голосов
/ 02 мая 2019
select *
from A a
    inner join B b on b.query = a.query
    inner join 
         (select max(id) id, query
          from B
          group by query) gq on gq.id = b.id and gq.query = b.query
where a.status = b.status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...