簡體   English   中英

MS Access 2007中的SQL JOIN問題

[英]SQL JOIN problem in MS Access 2007

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子句中的語法錯誤”。

編輯:

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

實際上,這可以正常工作並提供所需的ID號,但我要輸出的是Borrower表中包含的名稱。

我沒有使用Access 2007進行測試。但是,如果我嘗試單獨使用JOIN(未明確使用INNER JOIN),則Access 2003會抱怨“ from子句中的語法錯誤”。 似乎數據庫引擎要求您將JOIN指定為RIGHT JOIN,LEFT JOIN或INNER JOIN; 我找不到它將接受的任何其他變體。

更新:我建議您使用Access的查詢設計器創建一個新查詢。 只需添加表並設置聯接。 (將GROUP BY和其他所有內容留待以后使用。)然后,您可以切換到SQL View,以查看使Access滿意的聯接語法的類型。

我認為您不能混合使用隱式和顯式聯接。 你應該嘗試這個

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;
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;

最終,這個工作完成了。 再次感謝所有提供建議的人!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM