看来这是您最近的查询尝试:
SELECt a1.*, p.lifeSpan, a2.* FROM Zoo AS z INNER JOIN Plants AS p ON p.parent_id=z.id INNER JOIN Animal AS a1 ON (a1.id=z.predator)INNER JOIN Animal AS a2 ON (a2.id=z.prey)";WHERe z.preyType=@carnivore
从语句内部丢弃分号。也放弃双引号。
为了简化SQL,暂时不包括WHERe子句。
然后,您应该可以更好地解决Access的db引擎多次联接所需的括号问题。
SELECt a1.*, p.lifeSpan, a2.* FROM ((Zoo AS z INNER JOIN Plants AS p ON p.parent_id=z.id) INNER JOIN Animal AS a1 ON a1.id=z.predator) INNER JOIN Animal AS a2 ON a2.id=z.prey
注意,我丢弃了那些用ON表达式括起来的括号。简单的ON表达式不需要它们。如果您有一个用于ON的复合表达式,则需要这样的括号:
ON (p.parent_id=z.id AND p.foo = z.bar)
我建议的示例查询对我来说看起来是正确的。(如果它对您有用,请再次添加您的WHERe子句。)但是,由于我使用Access的查询设计器来设置联接,因此我并没有特别注意括号的位置…并且它添加了db引擎所需的括号。
。
我敦促您也这样做。如果您使用的是来自Dot.Net的Access数据库,而没有安装Access副本,那么您确实应该获得一个副本。尝试在没有该数据库的本机开发工具的情况下使用数据库是一个不合理的挑战……有点像在戴手套的时候尝试打字。



