Я немного озадачен тем, как это сделать. Я хочу выбрать записи из таблицы «агентство», соединенной с таблицей «заметки» в столбце идентификатора, который разделяют две таблицы.
Структура таблицы:
create table notes (
notes_id varchar2(5),
agency_gp_id varchar2(5),
call_date date,
call_note varchar2(4000)
);
create table agency(
agency_id varchar2(5),
agency_name varchar2(5),
street varchar2(75),
city varchar2(50)
);
alter table notes add constraint "fk_group_notes_agency_id" foreign key(agency_gp_id)
references agency(agency_id) enable;
- Каждая таблица имеет автоматическую нумерацию, триггеры «перед вставкой», поэтому номера идентификаторов остаются синхронизированными (наряду с другими вещами в случае добавления заметки во вновь созданное агентство) - все, что мне нужно для этого ( база данных), это делает.
-Каждая запись из таблицы агентства имеет отдельное комбинированное имя / адрес (с разными филиалами в разных городах), и каждая запись из таблицы заметок имеет запись даты, соответствующую каждому агентству.
-Каждое агентство может иметь несколько заметок (несколько записей примечаний от последующих посещений)
То, что я пытаюсь сделать, - это выбрать каждое (отдельное агентство, улицу, город), к которому в течение последних четырех месяцев не было добавлено примечание.
Это мой запрос:
SELECT count(a.agency_name) as number_of_visits,
a.agency_name,
(a.street||', '||a.city) as "Location",
n.call_date,
ROUND(TRUNC(sysdate - call_date)) AS days_since_visit
FROM notes n, agency a
WHERE (sysdate - n.call_date) > 120
AND n.agency_gp_id = a.agency_id
--AND a.city = 'München' --not necessary, used for limiting number of results
GROUP BY n.call_date,a.agency_name,a.street, a.city
ORDER BY a.agency_name ASC, n.call_date desc;
Это вроде работает ... Я вижу то, что хочу, но я также вижу то, что НЕ хочу (например, несколько заметок в каждом агентстве). Единственное, что я хочу увидеть, - это последняя запись (самая последняя, согласно предложению WHERE) каждого агентства. Картинка, которую я хочу создать: для любого агентства, которое не было аннотировано в течение 120 дней с момента последней заметки, отобразите адрес, имя и дату последней заметки.
(Вместо того, чтобы показывать количество дней, прошедших с КАЖДОГО посещения, я хочу показать количество дней, прошедших с момента последнего посещения - для отдельного агентства, улицы, города).
Это приложение, которое поможет руководителю отдела продаж планировать ее продажи и запускается два раза в неделю. Я не смог понять это. Кроме того, имейте в виду, что используемые таблицы являются гораздо более описательными - здесь я использовал только те части, которые мне нужны для описания вопроса.
Буду признателен за любые предложения по решению этой проблемы.
Спасибо!