Использование псевдонима с подзапросами - PullRequest
1 голос
/ 11 апреля 2011

У меня проблема с одним из моих запросов 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: мой запрос сгенерирован из DQL Doctrine, поэтому его может быть сложнее настроитьона.)

1 Ответ

4 голосов
/ 11 апреля 2011

Два варианта:

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.

...