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子句中的语法错误”。MS Access 2007中的SQL JOIN问题
编辑:
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号,但我想输出是包含在借款人的表名。
你真的使用MySQL为MS Access的原型吗?只是好奇。 – 2010-10-22 14:58:44
这不是问题的根源(没有INNER/LEFT/RIGHT的JOIN是问题),但是为什么你明确地做了一个连接,l => bc,还有一个隐式地bw => l?两者都是INNER JOIN,因此在JOIN中应该有任何问题。虽然Jet通常优化相同的隐式和显式JOIN,但我希望这是一个明确的JOIN--除非有充分的理由这么做,否则我绝不使用隐式JOIN。 – 2010-10-23 01:05:09
@Larry:MySQL是我在家里的测试环境。不幸的是,我现在没有使用Access 2007进行测试,并且我对实际帮助的回应将在周一之前发布。 – User3419 2010-10-23 17:33:47