2017-10-20 42 views
0

J'ai cette requête ci-dessous:Pourquoi est-ce que j'obtiens un identifiant invalide dans cette requête pour la table dans la clause From?

Select b.b_id as Business_id, b.business_name, Average_Rating, b.review_count AS Review_count 
FROM (
    SELECT b.b_id AS Business_id, AVG(r.rating) AS Average_Rating 
    FROM Business b 
    JOIN Business_Category bc ON b.bc_id = bc.bc_id 
    JOIN Review r ON b.b_id = r.b_id 
    WHERE bc.category_name = 'Breakfast and Brunch' AND b.city = 'San Jose' AND b.state = 'CA' 
    GROUP BY b.b_id 
) t_one 
INNER JOIN Business b_one ON t_one.b_id = b_one.b_id 
ORDER BY Average_Rating DESC, Review_count DESC, Business_Id ASC; 

Je reçois dans invalid identifier sur cette ligne: INNER JOIN Business b_one ON t_one.b_id = b_one.b_id pour t_one.

Erreur:

ORA-00904: "T_ONE"."B_ID": invalid identifier

+3

Il n'y a pas t_one.b_id lorsque vous avez nommé ce champ comme Business_id dans la sous-requête. – Noxthron

Répondre

1

Votre alias b est pas dans le cadre de votre requête externe.

SELECT b_one.b_id as Business_id, b_one.business_name, Average_Rating, b_one.review_count AS Review_count 
FROM (
    SELECT b.b_id AS Business_id, AVG(r.rating) AS Average_Rating 
    FROM Business b 
    JOIN Business_Category bc ON b.bc_id = bc.bc_id 
    JOIN Review r ON b.b_id = r.b_id 
    WHERE bc.category_name = 'Breakfast and Brunch' AND b.city = 'San Jose' AND b.state = 'CA' 
    GROUP BY b.b_id 
) t_one 
INNER JOIN Business b_one ON t_one.b_id = b_one.b_id 
ORDER BY Average_Rating DESC, Review_count DESC, Business_Id ASC;