Access отказывается запускать запрос со связанной таблицей? - PullRequest
3 голосов
/ 23 мая 2010

у меня есть 3 таблицы, как следует

cash_credit

Bank_Name-------in_date-------Com_Id---Amount
America Bank    15/05/2010      1       200
HSBC            17/05/2010      3       500

Cheque_credit
Bank_Name-----Cheque_Number-----in_date-------Com_Id---Amount
America Bank   74835435-5435    15/05/2010      2       600
HSBC           41415454-2851    17/05/2010      5       100

Companies
com_id----Com_Name
1         Ebay
2         Google
3         Facebook
4         Amazon

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

SELECT cash_credit.Amount, Companies.Com_Name, cheque_credit.Amount
FROM cheque_credit INNER JOIN (cash_credit INNER JOIN Companies ON cash_credit.com_id = Companies.com_id) ON cheque_credit.com_id = Companies.com_id;

Я получаю сообщение об ошибке, говорящее о том, что мое внутреннее объединение неправильно, этот запрос был создан с использованием дизайна запросов Access 2007 ошибка

Type mismatch in expression

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

JOIN expression is not supported

Я запутался в том, где проблема, которая вызывает все это

Ответы [ 3 ]

3 голосов
/ 23 мая 2010

Является ли тип данных столбца com_Id одинаковым / согласованным во всех 3 таблицах?
Если нет, исправьте тип данных и сделайте его совместимым для этого столбца.

Это должно решить проблему для вас.

2 голосов
/ 23 мая 2010

Думаю, вы захотите:

SELECT cash_credit.Amount, Companies.Com_Name, cheque_credit.Amount
FROM ( cheque_credit
INNER JOIN Companies 
ON cheque_credit.com_id = Companies.com_id)
INNER JOIN  cash_credit
ON cash_credit.com_id = Companies.com_id;
1 голос
/ 23 мая 2010

По поводу вашей первой ошибки:

Несоответствие типов в выражении

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

Companies.com_id
cash_credit.com_id
cheque_credit.com_id

Относительно различных типов объединений, поскольку вы, похоже, не знаете, когда их следует использовать:

Разница между LEFT JOIN и INNER JOIN в том случае, если в левой таблице есть строка, которая не соответствует ни одной строке в правой таблице:

  • LEFT JOIN: возвращает строку со значениями NULL для значений в правой таблице
  • INNER JOIN: строка не возвращается
...