2017-06-04 47 views
2

我试图让我的子查询表示为NUM_of_CUST列的MAX值,并与艺术家的名字在TGE主查询旁边显示它,所以它会显示如下:具有连接的SQL查询滞留一起

这位演出| NUM_of_CUST

Select A.Lastname ||''|| A.FirstName as Artist_Name from dhey.ARTIST A 
LEFT JOIN 
(SELECT * FROM(
SELECT COUNT(*) As Num_of_Customer From Dhey.CUSTOMER_ARTIST_INT CAI 
GROUP BY ARTISTID 
ORDER BY COUNT(*) desc) WHERE ROWNUM = 1) B on A.ArtistID = B.ArtistID; 

但是SQL是扔一点。B ARTISTID “””:无效的标识符例外

任何人都可以在此奉劝

谢谢

+1

你可能想'选择ArtistID,COUNT(*)'在最内层查询... – MatBailie

回答

2

我真的不明白?!你想要做什么,但我认为它要么是你想要的每位艺术家的客户数量

Select A.Lastname ||''|| A.FirstName as Artist_Name 
     COUNT(*) as nb_cust 
from dhey.ARTIST A 
LEFT outer JOIN Dhey.CUSTOMER_ARTIST_INT B on A.ArtistID = B.ArtistID 
group by A.ArtistID, A.Lastname ||''|| A.FirstName 
order by nb_cust desc 

或者你想要的客户的最大数量整体和联系,为您的艺术家......这是一个线交叉的产物。

Select A.Lastname ||''|| A.FirstName as Artist_Name 
     nb_cust_max 
from dhey.ARTIST A 
cross join ( select max(nb_cust) as nb_cust_max 
       from ( select count(*) as nb_cust 
          From Dhey.CUSTOMER_ARTIST_INT 
          group by ARTISTID 
         ) 
      ) 

我关闭了吗?或完全错误?

否则,由MatBailie建议,你可以添加缺少的领域

Select A.Lastname ||''|| A.FirstName as Artist_Name from dhey.ARTIST A 
LEFT JOIN 
(SELECT * FROM(
SELECT ARTISTID, COUNT(*) As Num_of_Customer From Dhey.CUSTOMER_ARTIST_INT CAI 
GROUP BY ARTISTID 
ORDER BY COUNT(*) desc) WHERE ROWNUM = 1) B on A.ArtistID = B.ArtistID; 
+0

嘿史蒂夫,对不起,不存在明确这一点,我试图找出哪个艺术家有兴趣的大多数客户他/她,还有 有多少客户对他们感兴趣? 这两张表的架构如下: CUSTOMER_ARTIST_INT(CustomerID,ArtistID) ARTIST(ArtistID,Firstname,Lastname) – ABB25

+0

然后我发布第一个查询。您可以在末尾添加一个'order by'命令,以排名第一。 – Steven

+0

我想这一点: SELECT A.lastname || '' || A.firstname为这位演出 FROM dtoohey.CUSTOMER_ARTIST_INT CAI LEFT JOIN dtoohey.CUSTOMERç ON CAI.CUSTOMERID = C.CUSTOMERID LEFT JOIN dtoohey .ARTIST甲 ON CAI.ARTISTID = A.ARTISTID WHERE A.ARTISTID = (由COUNT由ArtistID SELECT ArtistID,COUNT(*)FROM dtoohey.CUSTOMER_ARTIST_INT 组 顺序(*)递减); 我工作的主要查询,但子查询不工作,我做错了什么吗? – ABB25

0

我已经解决了我的答案与此

SELECT A.lastname ||''||A.firstname as Artist_Name, COUNT(CAI.ARTISTID) AS NumberOfCustomers 
FROM dhey.CUSTOMER_ARTIST_INT CAI 
LEFT JOIN dhey.CUSTOMER C 
ON CAI.CUSTOMERID = C.CUSTOMERID 
LEFT JOIN dhey.ARTIST A 
ON CAI.ARTISTID = A.ARTISTID 
group by A.lastname, A.firstname 
having count(*) = (select max(count(ArtistID)) 
        from dhey.CUSTOMER_ARTIST_INT 
        group by ArtistID); 

谢谢所有帮助!