выбрать, получить автомобили, которые из-за работы - PullRequest
0 голосов
/ 19 ноября 2010

Моя база данных состоит из 2 таблиц.Я использую MySQL.

Таблица 1

cars = id (int, PRIMARYKEY), reg (int), type (int)

Таблица 2

jobs = ref (int, PRIMARYKEY), id (int), date (date)

Мне нужно утверждение SELECT, которое бы получило все автомобили, которые не имели работы в течение последних 3 недель.

(то есть: если автомобиль не работал в течение последних 3 недель, то этот автомобиль (id) будет возвращен.)

Я знаю, что было бы несколько способов сделать это, однако яя не до скорости в sql: <</p>

Ответы [ 3 ]

2 голосов
/ 19 ноября 2010

Это хороший вариант использования для NOT EXISTS:

select c.id,c.reg,c.type
from cars c
where not exists 
(
  select NULL
  from jobs j
  where j.id = c.id
  and j.date >= CURRENT_DATE - INTERVAL 3 WEEK
);
0 голосов
/ 19 ноября 2010

Если ссылка между обеими таблицами - это jobs.ref, то sql может выглядеть следующим образом:

   select id from cars where id in 
    (select ref from jobs where date < DATE_SUB(NOW(),INTERVAl 21 DAY)
0 голосов
/ 19 ноября 2010

Я не знаю, какой вариант Oracle вы используете, но это будет работать на Oracle.В других вариантах вам придётся договариваться о дате другим способом (и, возможно, синтаксис соединения немного другой).

select *
from cars c
 left join jobs j 
  on j.id = c.id
where j.date < sysdate - 21
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...