Виртуальная таблица SQL - PullRequest
0 голосов
/ 18 декабря 2009

Моя база данных настроена так:

У каждого продукта, который у меня есть, есть своя собственная таблица, в которой записывается количество проданных товаров / номер транзакции (таким образом, столбец 1 - это «ID транзакции», столбец 2 - «количество»)

ex) p-backScratcher (где p- указывает на «продукт»)

Существуют также таблицы для каждого года, в которых хранятся записи о каждой пройденной транзакции. Каждая из этих таблиц содержит следующие столбцы: «транзакция», «дата», «время», «pt_CA», «pt_DB», «pt_VC», «pt_MC», «pt_CH», «pt_AM»

ex) продажи-2008, продажи-2009 и т. Д. И т. Д.

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

Так, например, я бы хотел запросить все транзакции для «p-backScratcher», я не хочу вводить

SELECT sales-2008.date, sales-2009.date 
  FROM sales-2008, sales-2009 
 WHERE sales-2008.transactionID = p-backScratcher.transactionID 
    OR sales-2009.transactionID = p-backScratcher.transactionID

... а точнее:

SELECT sales.date 
  FROM sales 
 WHERE sales.transactionID = p-backScratcher.transactionID

Ответы [ 4 ]

4 голосов
/ 18 декабря 2009

В SQL, как говорится в ответе Кайла, вы можете создать View , который является разновидностью виртуальной таблицы, но я настоятельно рекомендую вам получить книгу или Google , Проектирование реляционной базы данных , прежде чем вы посвятите себя структуре базы данных.

2 голосов
/ 18 декабря 2009

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

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

Вам нужна одна таблица «Продукт» и одна таблица «Транзакция».

1 голос
/ 18 декабря 2009

То, что вы ищете, называется «представлением», которое в значительной степени является сохраненным оператором, представляющим собой список правильно отформатированных результатов. Вы можете запросить его напрямую, как будто это таблица.

0 голосов
/ 18 декабря 2009

Не уверен, насколько велик этот проект или каковы ваши конкретные требования (например, если у вас есть связанный с ним код), но вы можете захотеть перенести ваши данные в MS SQL (или MySQL и т. Д.). SQL Server имеет настольную версию, которая является бесплатной, но поддерживает только ограниченный набор функций (в это включены представления).

MySQL, PostGre и т. Д. Поддерживают функции, которые вы ищете, в том числе унаследованные таблицы в PostGre (не совсем то, что вам нужно, но похоже).

Я некоторое время не работал с Access, и я не уверен, что он будет поддерживать функции, которые вы ищете.

...