2016-11-09 7 views
0

В настоящее время я создаю систему баз данных с использованием oracle 10g. Я разработал запрос, который показывает экземпляр события, клиент, который запросил событие, и персонал, назначенный для события. Мой запрос возвращает все правильные результаты, но я хотел знать, есть ли способ удалить повторяющиеся данные. Для каждого назначенного сотрудника результат возвращает информацию о событии и клиенте. Я прикрепил фотографию. Есть ли способ вернуть данные клиента и события только один раз в их столбцах и соответствующие записи персонала, назначенного в этих столбцах?удалить повторяющиеся данные из запроса Oracle SQL * Plus

Это мой код

COLUMN E_ID FORMAT A7 
COLUMN E_NAME FORMAT A20 
COLUMN E_STIME FORMAT A30 
COLUMN E_FTIME FORMAT A30 
COLUMN E_COST FORMAT 9999999.99 
COLUMN ET_ET_ID FORMAT A5 
COLUMN V_V_ID FORMAT A5 
COLUMN C_C_ID FORMAT A5 
COLUMN C_FNAME FORMAT A10 
COLUMN C_LNAME FORMAT A10 
COLUMN S_S_ID FORMAT A5 
COLUMN S_FNAME FORMAT A10 
COLUMN S_LNAME FORMAT A10 
COLUMN S_TASK FORMAT A20 
COLUMN S_CNUM FORMAT 9999999 
COLUMN ST_DESC FORMAT A20 
SELECT E_ID, E_NAME, EVENT.C_C_ID ,C_FNAME, C_LNAME, E_STIME, E_FTIME, E_COST, EVENT.ET_ET_ID, EVENT.V_V_ID, EVENT_STAFF.S_S_ID, S_FNAME, S_LNAME, S_TASK, S_CNUM, STAFFTYPE.ST_DESC 
FROM CUSTOMER, EVENT, EVENT_STAFF, STAFF, STAFFTYPE 
WHERE EVENT.E_ID = 'E000004' 
AND EVENT.C_C_ID = CUSTOMER.C_ID 
AND EVENT.E_ID = EVENT_STAFF.E_E_ID 
AND EVENT_STAFF.S_S_ID = STAFF.S_ID 
AND STAFF.ST_ST_ID = STAFFTYPE.ST_ID; 

Результаты в SQL плюс как показано enter image description here

ответ

2

Вот что BREAK ON directive в SQL * Plus для. Добавить в COLUMN форматирования директив:

BREAK ON E_ID ON E_NAME ... 

список всех столбцов, где вы хотите исключить дубликаты. Не забудьте использовать ORDER BY, чтобы гарантировать, что записи для каждого события и клиента возвращаются в правильной последовательности.

+0

спасибо, что работает отлично –