Конференция "Базы" » запрос [Firebird]
 
  • Цукор5 (08.12.10 00:25) [0]
    Здравствуйте. Направьте мои мысли в нужное русло.

    Таблица продаж.
    CREATE TABLE SALES (
       ID         INTEGER NOT NULL,
       DEVICE     INTEGER,  
       CODE       BIGINT,
       CDAY       DATE,
       COUNTSALE  INTEGER
    );

    Таблица товаров.
    CREATE TABLE PRODUCT (
       ID      INTEGER NOT NULL,
       DEVICE  INTEGER,
       CODE    BIGINT,
       CDAY    DATE,
       NAME    VARCHAR(20) COLLATE PXW_CYRL
    );

    Задача: отобразить таблицу SALES добавив название товара (поле NAME). Но не всё так просто, нужно смотреть на дату в таблице PRODUCT.

    Данные, чтобы стало яснее.
    Таблица SALES
    1 111 482001 01/12/10 2
    2 111 482001 02/12/10 1
    3 111 482001 03/12/10 1
    4 111 482001 04/12/10 2

    Таблица PRODUCT
    1 111 482001 01/12/10 журн.Лиза№35
    2 111 482001 03/12/10 журн.Лиза№36

    В итоге должно получиться так:
    1 111 482001 01/12/10 2 журн.Лиза№35
    2 111 482001 02/12/10 1 журн.Лиза№35
    3 111 482001 03/12/10 1 журн.Лиза№36
    4 111 482001 04/12/10 2 журн.Лиза№36

    Как быть? Создать третью таблицу (но что она даст?) или лучше и оптимальнее сделать всё в хранимой процедере? Предполагаю, что записей много будет и нужно оперативно отображать запрос.
  • Ega23 © (08.12.10 01:26) [1]
    Select S. ...,  P. ....
    from Sales S left join Products P on (....)
    order by ....

 
Конференция "Базы" » запрос [Firebird]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]