Выбор более 1 таблицы в одном запросе - PullRequest
0 голосов
/ 21 марта 2010

У меня есть 5 таблиц в MS Access как

Logs [Title, ID, Date, Author]
Tape [Title, ID, Date, Author]
Maps [Title, ID, Date, Author]
VCDs [Title, ID, Date, Author]
Book [Title, ID, Date, Author]

Я попробовал свой уровень лучше всего через этот код

SELECT Logs.[Author], Tape.[Author], Maps.[Author], VCDs.[Author], Book.[Author]
FROM Logs
   , Tape
   , Maps
   , VCDs, Book
WHERE ((([Author] & " " & [Author] & " " & [Author] & " " & [Author]& " " & [Author])        
Like "*" & [Type the Title or Any Part of the Title and Press Ok] & "*"));

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

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

Пожалуйста, помогите.

Ответы [ 3 ]

5 голосов
/ 21 марта 2010

Я второе, что предлагают Лексу и Тревор Типпинс, и это решит вашу непосредственную проблему.

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

Если ваше приложение часто работает со всеми пятью таблицами, я бы сказал, что модель базы данных должна показывать это. Кроме того, производительность запросов UNION не является звездной, особенно в MS Access, и вы получите другие штрафы, такие как не обновляемый набор результатов.

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

Обязательно поймите все упомянутые концепции, например, здесь , прежде чем ваши базы данных и приложения станут слишком сложными, потому что редизайн повлияет на все запросы, формы и код, и позже это произойдет, чем больше работы это потребует.

4 голосов
/ 21 марта 2010

Вы можете попробовать это:

   select 'Logs', Title, ID, Date, Author from Logs where Author like 'Adam'
union
   select 'Tape' ,Title, ID, Date, Author from Tape where Author like 'Adam'
union
   select 'Maps',Title, ID, Date, Author from Maps where Author like 'Adam'
union
   select 'VCDs', Title, ID, Date, Author from VCDs where Author like 'Adam'
union
   select 'Book', Title, ID, Date, Author from Book where Author like 'Adam'

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

2 голосов
/ 21 марта 2010

Попробуйте создать новый запрос, объединяющий все таблицы, а затем измените существующий запрос, чтобы выбрать из него, а не из каждой базовой таблицы независимо.Так что-то вроде:

SELECT * 
  FROM NewUnionQuery 
 WHERE NewUnionQuery.Title LIKE "*" & [Enter a Title] & "*";

Кроме того, найдите хорошую книгу по SQL и прочитайте ее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...