Две одинаковые таблицы в Oracle - PullRequest
0 голосов
/ 29 января 2009

Я создал две идентичные таблицы, в которых перечислены все исключения в отношении определенных правил продуктов в базе данных. Таблица 1 предназначена для недели 1 Таблица 2 предназначена для недели 2, исключение составляет только просмотр на еженедельной основе, и в базу данных не вносятся никакие исправления. Данные за две недели включают исключения за первую неделю, я хочу исключить исключения за одну неделю из двух недель. только для просмотра новых исключений

Ответы [ 4 ]

1 голос
/ 29 января 2009

Oracle имеет оператор МИНУС, поэтому вы можете сделать

SELECT col_a, col_b... FROM table_new
MINUS
SELECT col_a, col_b... from table_old

Это работает, пока столбцы имеют соответствующие типы данных (так будет работать с SELECT *, если таблицы имеют одинаковую структуру).

1 голос
/ 29 января 2009

Я предлагаю вам добавить временную метку к таблицам и выбрать / отфильтровать эту временную метку.

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

Я плохо разбираюсь в PL / SQL, но, возможно, вы можете адаптировать мой MySQL-пример:

CREATE DATABASE timetest;
CONNECT timetest;

CREATE TABLE errorlog (
  stamp TIMESTAMP NOT NULL ,
  error VARCHAR(255) NOT NULL
);

INSERT into errorlog (`stamp`, `error`)
  VALUES (DATE_SUB(CURDATE(),INTERVAL 8 DAY), 'old');
INSERT into errorlog (`stamp`, `error`)
  VALUES (NOW(), 'new');

SELECT * FROM errorlog WHERE stamp>DATE_SUB(CURDATE(),INTERVAL 7 DAY);
SELECT * FROM errorlog WHERE stamp<DATE_SUB(CURDATE(),INTERVAL 7 DAY);
DROP DATABASE timetest;

Дает мне:

mysql> SELECT * FROM errorlog WHERE stamp>DATE_SUB(CURDATE(),INTERVAL 7 DAY);
+---------------------+-------+
| stamp               | error |
+---------------------+-------+
| 2009-01-29 01:44:38 | new   |
+---------------------+-------+

mysql> SELECT * FROM errorlog WHERE stamp<DATE_SUB(CURDATE(),INTERVAL 7 DAY);
+---------------------+-------+
| stamp               | error |
+---------------------+-------+
| 2009-01-21 00:00:00 | old   |
+---------------------+-------+
0 голосов
/ 31 января 2009

Чтобы действительно помочь вам, нам нужно больше информации. Вы говорите о таблицах или представлениях («... исключение - это просто просмотр на еженедельной основе ...» часть меня смутила)?

Если бы вы могли предоставить короткий полный пример (да - украден у Тома Кайта), мы могли бы дать полный ответ. То есть если вышесказанное вам не помогло.

0 голосов
/ 29 января 2009

Также может быть некоторое преимущество, если разбить таблицу на разделы по номеру года / недели.

...