Проблема SQL JOIN в MS Access 2007 - PullRequest
       2

Проблема SQL JOIN в MS Access 2007

0 голосов
/ 22 октября 2010
SELECT DISTINCT bw.Bor_name
FROM Borrower AS bw, Loan AS l
JOIN Book_Copy AS bc
ON l.Bc_id = bc.Bc_id
WHERE bw.Bor_id = l.Bor_id
GROUP BY l.Bor_id, bc.Bt_id
HAVING COUNT( bc.Bt_id ) > 1
AND COUNT( l.Bor_id ) > 1;

Это прекрасно работает в среде тестирования MySQL, но не будет работать в MS Access 2007, где мне действительно нужно его запустить. У меня есть несколько других запросов, которые связаны с использованием JOIN, и он также выдает такую ​​же ошибку для них: «Синтаксическая ошибка в предложении FROM».

Edit:

SELECT DISTINCT l.Bor_id
FROM Loan AS l
INNER JOIN Book_Copy AS bc
ON l.Bc_id = bc.Bc_id
GROUP BY l.Bor_id, bc.Bt_id
HAVING COUNT( bc.Bt_id ) > 1
AND COUNT( l.Bor_id ) > 1

На самом деле этот работает нормально и дает мне требуемый идентификационный номер, но я хочу вывести имя, которое содержится в таблице Заемщика.

Ответы [ 3 ]

3 голосов
/ 22 октября 2010

Я не тестировал с Access 2007. Однако Access 2003 жалуется на «синтаксическую ошибку в предложении from», если я пробую только JOIN (без явного использования INNER JOIN).Кажется, ядро ​​базы данных требует, чтобы вы указали JOIN как RIGHT JOIN, LEFT JOIN или INNER JOIN;Я не могу найти другой вариант, который он примет.

Обновление: я предлагаю вам создать новый запрос с помощью конструктора запросов Access.Просто добавьте таблицы и настройте соединения.(Оставьте GROUP BY и все остальное на потом.) Затем вы можете переключиться на SQL View, чтобы увидеть тип синтаксиса соединения, который делает Access доступным.

0 голосов
/ 31 октября 2010
SELECT DISTINCT bw.Bor_name
FROM Borrower AS bw, Loan AS l
JOIN Book_Copy AS bc
ON (l.Bc_id = bc.Bc_id)
WHERE bw.Bor_id = l.Bor_id
GROUP BY bw.Bor_name, bc.Bt_id
HAVING COUNT( bc.Bt_id ) > 1
AND COUNT( l.Bor_id ) > 1;

В конце концов этот сделал свою работу. Еще раз спасибо всем, кто посоветовал с нами!

0 голосов
/ 22 октября 2010

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

SELECT DISTINCT bw.Bor_name
FROM Borrower AS bw
join Loan AS l
on bw.Bor_id = l.Bor_id
JOIN Book_Copy AS bc
ON l.Bc_id = bc.Bc_id
GROUP BY l.Bor_id, bc.Bt_id
HAVING COUNT( bc.Bt_id ) > 1
AND COUNT( l.Bor_id ) > 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...