1

我的一个 SQL 请求有问题,它是由子查询发出的。

我试图划分两个COUNT(*)请求的结果:

SELECT (SELECT COUNT(*) FROM book) nb_books,
       (SELECT COUNT(*) FROM author) nb_authors,
       nb_books / nb_authors

(我的要求要复杂得多,我为示例简化了它)

但 MySQL 一直在告诉Unknown column nb_books in field list。有没有办法使这个请求起作用?

感谢您的回答。

(PS:我的请求是由Doctrine从DQL生成的,所以定制起来可能会比较困难。)

4

1 回答 1

4

两种选择:

SELECT (SELECT COUNT(*) FROM book)  as nb_books ,
       (SELECT COUNT(*) FROM author) as nb_authors,
       (SELECT COUNT(*) FROM book) /  (SELECT COUNT(*) FROM author)

或者

SELECT nb_books, nb_authors, nb_books/nb_authors
FROM (
    SELECT (SELECT COUNT(*) FROM book) nb_books,
           (SELECT COUNT(*) FROM author) nb_authors
)

我更喜欢第二种方式。如果 nb_authors 可能等于 0,您可能必须设置一个条件。

于 2011-04-11T12:15:35.103 回答