Присоединиться или подзапрос в MS Access - PullRequest
1 голос
/ 07 января 2011

Когда я начал это, я посмотрел на «Смежные вопросы», но ни один из них не совпадает с тем, что я пытаюсь сделать.

Если возможно, я хочу, чтобы мой запрос был обновляемым.

Что лучше?

SELECT foobar.foo, foobar.bar
FROM foobar
WHERE foobar.baz IN (SELECT blahwoof.baz FROM blahwoof WHERE blahwoof.blah = 'value')

Или:

SELECT foobar.foo, foobar.bar
FROM foobar INNER JOIN blahwoof ON foobar.baz = blahwoof.baz
WHERE blahwoof.blah = 'value'

Редактировать

Я полностью уточнил имена столбцов выше. Я также понял, что не полностью определил, что меня интересует только foobar - blahwoof - это только справочная таблица.

Редактировать 2

Схема «голые кости» выглядит следующим образом (очевидно, не реальный код):

table foobar
  foo       Autonumber PK
  bar       long       FK ref gleeblesnort
  baz       long       FK ref blahwoof

table blahwoof
  baz       Autonumber PK
  blah      text       --'type' designation

В конечном итоге я также получу значения из gleeblesnort, но это не является прямой частью этого запроса.

Ответы [ 3 ]

0 голосов
/ 07 января 2011

Я думаю, что это не один и тот же запрос. в первом запросе, если у вас есть 1 значение baz, этого достаточно для выполнения условия WHERE, и вы действительно имели в виду результаты объединения (baz и blah = value ...)

(вам может понадобиться использовать префикс таблицы осведомленности baz, чтобы сделать его более понятным)

0 голосов
/ 07 января 2011

Первая версия представления будет обновляться в любой разумно совместимой СУБД SQL.

0 голосов
/ 07 января 2011

Используйте внутреннее соединение.Это должно быть намного более производительным.IIRC, это тоже будет обновляться.

...