Как выбрать топ 1 ID из каждой из двух неприсоединяемых таблиц? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть отношение n к n на моей базе данных, и я хочу заполнить соединительную таблицу посередине.

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

Итак, моя первая попытка была такой:

INSERT into foo_has_bar (foo_ID, bar_ID) VALUES (
  (Select TOP 1 ID from foo where foo_cond = "TRUE"),
  (Select TOP 1 ID from bar where bar_cond = "TRUE")
)

Теперь это неверно и возвращает

Входные данные запроса должны содержать хотя бы одинтаблица или запрос

Теперь, когда я пытаюсь создать его в форме, описанной в ссылке выше, мне нужно что-то вроде этого:

INSERT into foo_has_bar (foo_ID, bar_ID)
Select foo.ID, bar.ID FROM foo, bar
...
)

Но как мне теперь * 1019?* объединить SELECT TOP 1 для каждого из них и WHERE также только для соответствующего (foo не будет иметь bar_cond)?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Фактическое решение, которое я нашел с помощью подсказок в этот вопрос :

INSERT into foo_has_bar (foo_ID, bar_ID)
VALUES (DLOOKUP("ID", "foo", "foo_cond = ""TRUE"""),
        (DLOOKUP("ID", "bar", "bar_cond = ""TRUE"""),
       );

Ужасный выход в ACCESS ..

0 голосов
/ 12 сентября 2018

Я ожидаю, что этот запрос будет работать в MS Access:

INSERT into foo_has_bar (foo_ID, bar_ID)
    VALUES ((Select TOP 1 ID from foo where foo_cond = "TRUE"),
            (Select TOP 1 ID from bar where bar_cond = "TRUE")
           );

Но если это не так, попробуйте это:

INSERT into foo_has_bar (foo_ID, bar_ID)
    SELECT f.ID, b.ID
    FROM (Select TOP 1 ID from foo where foo_cond = "TRUE"
         ) as f,
         (Select TOP 1 ID from bar where bar_cond = "TRUE"
         ) as b;

Как примечание: Обычно вы должны использовать ORDER BY с TOP, поэтому, какой идентификатор вы получаете, соответствует.

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