【发布时间】:2010-10-22 14:24:27
【问题描述】:
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 表中包含的名称。
【问题讨论】:
-
您真的在使用 MySQL 为 MS Access 制作原型吗?只是好奇。
-
这不是你的问题的根源(没有 INNER/LEFT/RIGHT 的 JOIN 是问题),但是你为什么显式地做一个连接,l=>bc,一个隐式的, bw=>l?两者都是 INNER JOIN,因此使用 JOIN 进行这两种操作都应该有任何问题。虽然 Jet 通常以相同的方式优化等效的隐式和显式 JOIN,但我希望这是一个显式 JOIN——除非有充分的理由,否则我从不使用隐式 JOIN。
-
@Larry:MySQL 是我在家里的测试环境。不幸的是,我现在没有要测试的 Access 2007,我对实际帮助的回复将在星期一之前发布。
-
@David:非常感谢您的回复!我真的相信你有足够的能力,我非常感谢你的关心。是的,起初我尝试使用 LEFT/RIGHT 连接,但它会给我同样的错误。当我能够再次在 Access 中进行测试时,我会更多地使用它。
-
呃,谢谢?也就是说,为了确认我的能力?