Как запросить возможные значения в двух таблицах - PullRequest
0 голосов
/ 16 января 2019

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

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

SELECT aa.eng, aa.id, bb.arb, bb.url, bb.id
FROM Arabic AS aa INNER JOIN English AS bb ON (aa.id = bb.id)

;

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

eng_id  arb_id
581026  581026
581026  581026
581026  581026
581026  581026
581026  581026
581026  581026
581026  581026
581026  581026
581026  581026
        581026
        581026
        581026

Пример данных приведен ниже

sample_data

Образцы данных арабской таблицы

Образцы данных английской таблицы Обновленные данные таблицы enter image description here

enter image description here

enter image description here

Новый вывод после сопоставления id1 enter image description here

Ответы [ 2 ]

0 голосов
/ 16 января 2019

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

Использование select distinct или добавлениеПредложение group by при выборе только полей id удалит все дубликаты id комбинаций, которые для ваших выборочных данных приведут только к одной записи:

select distinct aa.id, bb.id
from Arabic as aa left join English as bb on (aa.id = bb.id)
select aa.id, bb.id
from Arabic as aa left join English as bb on (aa.id = bb.id)
group by aa.id, bb.id

Результат:

aa.id   bb.id
581026  581026

С уникальным идентификатором (id1), ссылающимся на каждый элемент, вы можете просто использовать LEFT JOIN в поле id1, например:

select aa.eng, aa.id, bb.arb, bb.url, bb.id
from Arabic aa left join English bb on (aa.id1 = bb.id1)
0 голосов
/ 16 января 2019

Вам нужно использовать левое соединение вместо внутреннего соединения

SELECT aa.eng, aa.id, bb.arb, bb.url, bb.id
FROM Arabic AS aa left JOIN English AS bb ON (aa.id = bb.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...