Итак, отношение предок/потомок это в сущности отношение "один ко многим", но строить условия поиска только по этому принципу вовсе не обязательно. Вот, например, такой запрос по датам:
-- // --------------------------------------------------------------------- Найти все заказы, полученные в тот день, когда на работу был принят новый служащий. SELECT ORDER_NUM, AMOUNT, ORDER_DATE, NAME FROM ORDERS, SALESREPS WHERE ORDER_DATE = HIRE_DATE /
Получаем 6 строк:
SQL> SELECT ORDER_NUM, AMOUNT, ORDER_DATE, NAME 2 FROM ORDERS, SALESREPS 3 WHERE ORDER_DATE = HIRE_DATE 4 / ORDER_NUM AMOUNT ORDER_DATE NAME ------------ ---------- ----------- ------------------------------ 112968 3,978 12.10.1989 Маша Распутина 112979 15 12.10.1989 Маша Распутина 112975 2,1 12.10.1989 Маша Распутина 112968 3,978 12.10.1989 Максим Галкин 112979 15 12.10.1989 Максим Галкин 112975 2,1 12.10.1989 Максим Галкин 6 rows selected
Это пары строк из таблиц ORDERS и SALESREPS имеющие одинаковое значение в столбцах ORDER_DATE и HIRE_DATE.
Такая связь рождает отношение "многие ко многим". Что здесь собственно происходит, да просто в те дни, когда Маша Распутина и Максим Галкин были приняты на работу, было сделано три заказа соответственно, каждое, совпадение дат и дает три строки! Можно было сделать и на оборот, какие служащие были приняты в те дни когда были сделаны заказы... и так далее! Это в общем отвлеченные понятия, но оператор SELECT сработал безукоризненно. Итак, давайте сделаем небольшой итог:
Так же давайте рассмотрим объединение таблиц по неравенству. Например, вот такой запрос: Получить все комбинации служащих офисов, где плановый объем продаж служащего больше, чем план какого либо офиса.
SELECT NAME, QUOTA, CITY, TARGET FROM SALESREPS, OFFICES WHERE QUOTA > TARGET /
Соответственно получаем:
SQL> SELECT NAME, QUOTA, CITY, TARGET 2 FROM SALESREPS, OFFICES 3 WHERE QUOTA > TARGET 4 / NAME QUOTA CITY TARGET ------------------------------ ---------- ------------------------------ ---------- Вася Пупкин 350 Запиндрищинск 300 Филип Киркоров 350 Запиндрищинск 300 Крис Кельми 400 Запиндрищинск 300 Игорь Петров 350 Запиндрищинск 300 Максим Галкин 400 Запиндрищинск 300 Крис Кельми 400 Бубурино 350 Максим Галкин 400 Бубурино 350 7 rows selected
Условие поиска QUOTA > TARGET отбирает пары, в которых значение столбца QUOTA из таблицы SALESREPS, превышает значение столбца TARGET из таблицы OFFICES. Обратите внимание на то, что выбранные столбцы связаны только таким образом! Данный пример является несколько надуманным, но все же показывает как различные условия поиска легко применимы в приложениях, например, для систем принятия решений, а так же исследующих более сложные взаимосвязи в БД. К стати, особенно когда дается запрос к 5ти и более таблицам начинаешь понимать, что нифига не понимаешь! :) Можете попробовать сами!