ВЫБЕРИТЕ из ДВУХ таблиц без каких-либо записей - PullRequest
0 голосов
/ 24 октября 2018

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

t1 contain ID_car (unique), name 
t2 contain ID_car(from t1), status (many status records on same ID_car)

И мне нужен следующий результат:

All ID_car FROM t1 WITHOUT status = something

Я уже пробовал INNER, LEFT, RIGHT JOIN и не работал.Как я могу это сделать?Большое спасибо за помощь!

Подробнее:

t1
------------
ID_car      name
------------------
1           Toyota
2           Honda
3           Mazda
4           Ford


t2
-----------------
ID_car      status
1           ok
1           not_ok
2           ok
4           not_ok

ID_car 3 din У меня нет записей в t2, но я хочу показать результат

И мне нужен следующий результат(все машины от t1 без статуса машины not_ok):

the expected result
-----------------
ID_car      status
2           ok
3

Обновление 2 Наконец решено!Спасибо за помощь!Это работает для меня:

    SELECT * FROM t1 
WHERE t1.ID_auto NOT IN 
(SELECT DISTINCT t1.ID_auto FROM t1, t2 WHERE t1.ID_auto = t2.ID_auto AND t2.category='not_ok')

Ответы [ 4 ]

0 голосов
/ 24 октября 2018

Я не знаю, правильно ли я понимаю, но попробуйте и дайте мне знать:

SELECT DISTINCT t1.ID_car FROM t2  INNER JOIN t1 ON t2.ID_car = t1.ID_car WHERE t2.status != 'something'
0 голосов
/ 24 октября 2018

- обновляется в комментариях ниже.Это обновление вернет все записи из T2 (даже если они не существуют в T1), но только если T2.Status! = Что-то

- это должно делать то, что вы хотите.Он выдаст вам все записи в T1 и любые данные в T2 (но не обязательно должны быть в этой таблице), где ваш T1.status не является чем-то

SELECT *
FROM t1 
LEFT JOIN t2 ON T1.ID = T2.ID 
-- did the logic on the JOIN here instead of in where clause, because doing in where clause would force records to appear in t2 table (basically converting it to an inner join) doing it in the join itself does not cause this to happen
AND T2.Status != 'something'
0 голосов
/ 24 октября 2018
SELECT ID_car
FROM t1
  LEFT JOIN
     t2 on t1.ID_car=t2.ID_car
WHERE NOT t2.status='something'

Создано из головы, надеюсь, это работает!

Возможно, если бы вы могли опубликовать написанные вами запросы, возможно, они могли бы показать нам, почему объединения не работают, потому что это должно.

0 голосов
/ 24 октября 2018
 SELECT ID_car
   FROM t1
   LEFT JOIN t2
     ON t1.ID_car=t2.ID_car
  WHERE t2.status=something
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...