2011-04-11 5 views
1

부속 조회를 사용하여 작성한 SQL 요청 중 하나에 문제점이 있습니다.부속 조회에 별명 사용

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을 말하는 계속 :

나는 두 COUNT(*) 요청의 결과를 분할하는 것을 시도하고있다. 이 요청을 할 수있는 방법이 없습니까?

답장을 보내 주셔서 감사합니다.

(PS :. 내 요청이 교리에 의해 DQL에서 생성됩니다, 그래서 그것을 사용자 정의 할 더 어려울 수 있습니다)

답변

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 
) 

I 두 번째 방법을 선호합니다. nb_authors가 0 일 수있는 경우 조건을 입력해야 할 수도 있습니다.

+1

+1 두 번째 .. – PHP

+0

답변 감사드립니다. 그것은 간단한 예제와 함께 작동했지만 불행히도 내 요청은 실제로 복잡하고 Doctrine과 함께 작동하지 않습니다. 신경 쓰지 마. – Phen