2017-06-04 48 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); 

謝謝所有幫助!