2013-12-08 66 views
0

我有以下代码:别名子查询不工作

SELECT 
CU.customer_ID AS "Customer ID", 
CU.cust_LNAME AS "Last Name", 
CU.cust_FNAME AS "First Name", 
RH.movie_ID AS "Movie ID", 
MO.movie_title AS "Movie Title", 
MO.release_year AS "Release Year", 
(
SELECT COUNT(*) FROM RentalHistory RH2 WHERE RH2.movie_ID = RH.movie_ID AND RH2.customer_ID = RH.customer_ID HAVING COUNT(*) > 1 
) "Nbr. Of Times Rented" 
FROM Customer CU 
RIGHT JOIN Rentalhistory RH ON (RH.customer_ID = CU.customer_ID) 
INNER JOIN Movie MO ON (MO.movie_ID = RH.movie_ID) 
GROUP BY CU.customer_ID, RH.movie_ID  
HAVING "Nbr. Of Times Rented" > 1 
ORDER BY CU.cust_LNAME ASC, CU.cust_FNAME ASC; 

我不断收到无效的标识符别名子查询?任何想法,我做错了什么?

回答

0

我不认为你需要子查询。这是否做你想要的?

SELECT CU.customer_ID AS "Customer ID", 
     CU.cust_LNAME AS "Last Name", 
     CU.cust_FNAME AS "First Name", 
     RH.movie_ID AS "Movie ID", 
     MO.movie_title AS "Movie Title", 
     MO.release_year AS "Release Year", 
     COUNT(*) as "Nbr. Of Times Rented" 
FROM Customer CU RIGHT JOIN 
    Rentalhistory RH 
    ON RH.customer_ID = CU.customer_ID INNER JOIN 
    Movie MO 
    ON MO.movie_ID = RH.movie_ID 
GROUP BY CU.customer_ID, RH.movie_ID  
HAVING count(*) > 1 
ORDER BY CU.cust_LNAME ASC, CU.cust_FNAME ASC; 
+0

实际上确实在某种程度上工作,客户字段显示为空,可能必须调整JOIN来解决该问题。 – user3015045

+0

@ user3015045。 。 。如果您在租赁历史记录表中存在不在客户表中的'customer_id'(或者它们恰好在客户表中为“NULL”),就会发生这种情况。在大多数数据库中,您不需要'Customer'和'RentalHistory'之间的'right join'。 –