Две таблицы, объединение не возвращает данные из одной таблицы - PullRequest
0 голосов
/ 03 марта 2019

У меня есть две таблицы: одна (Organisations) с 60 строками данных, а другая (Question Data) с сотнями строк данных.Они оба имеют столбец OrgID, представляющий собой текстовое поле длиной 5 символов.

Оператор SQL:

SELECT Organisations.Co, Organisations.Type, Organisations.F_O, Question_Data.*
FROM Organisations INNER JOIN Question_Data ON Organisations.OrgID = Question_Data.OrgID;

Когда я выполняю этот запрос, НЕТ данных, возвращаемых изOrganisations таблица, хотя я знаю, что есть несколько совпадений данных (т.е. первые три столбца возвращаемых данных пусты).Изменение объединения дает те же результаты либо в обратном порядке, либо (в случае INNER JOIN) данные вообще не возвращаются.

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

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

Любая помощь будет оценена.Большое спасибо заранее.

Симус

1 Ответ

0 голосов
/ 03 марта 2019

Это ваш запрос:

SELECT o.Co, o.Type, o.F_O, qd.*
FROM Organisations as o INNER JOIN
     Question_Data as qd
     ON o.OrgID = qd.OrgID;

Ваш JOIN не работает - поэтому идентификаторы, которые выглядят одинаково, не совпадают.Это проблема, когда вы используете строки для идентификаторов (это не может произойти с целыми числами).

Наиболее распространенная причина - пробелы в начале или конце идентификаторов.Вы можете попробовать:

SELECT o.Co, o.Type, o.F_O, qd.*
FROM Organisations as o INNER JOIN
     Question_Data as qd
     ON TRIM(o.OrgID) = TRIM(qd.OrgID);

Если это проблема, то вам следует исправить данные, чтобы ваша версия JOIN (лучшая версия) работала.

Если это не такЧтобы решить проблему, вам, возможно, придется углубиться.Затем вы можете попробовать LIKE, чтобы увидеть, совпадает ли подстрока:

SELECT o.Co, o.Type, o.F_O, qd.*
FROM Organisations as o INNER JOIN
     Question_Data as qd
     ON TRIM(o.OrgID) LIKE '*' & TRIM(qd.OrgID) & '*' OR
        TRIM(qd.OrgID) LIKE '*' & TRIM(o.OrgID) & '*' ;

Например, пробельные символы могут быть не простыми пробелами, а чем-то другим - или даже чем-то невидимым.

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