2016-03-08 30 views
0

我有兩個表。一個與客戶,其他與客戶購買的產品。 當我想要得到的所有的產品和客戶的名單,我做的:COUNT和DISTINCT無組通過

SELECT client_name, prod_id FROM TAB_CLIENT 
    INNER JOIN TAB_PROD ON prod_client = client_name 

所以我得到(例如)

  • 亨利 - 土豆
  • 亨利 - 巧克力
  • 湯姆 - 啤酒

不錯。現在我想知道我有多少個不同的客戶。 所以我試着用COUNT和DISTINCT。就像這樣:

 SELECT COUNT(DISTINCT client_name) AS num_client, client_name, prod_id 
    FROM TAB_CLIENT 
    INNER JOIN TAB_PROD ON prod_client = client_name 

我想:

  • 2 - 亨利 - 土豆
  • 2 - 亨利 - 巧克力
  • 2 - 湯姆 - 啤酒

所以第一列的「2」作爲不同客戶的總數是2(亨利和湯姆),客戶的姓名是第二柱和作爲第三柱的產品名稱。 但事實上,如果我添加計數(不同),我只能得到一個結果(看起來好像在num_client上有一個「group by」)。而且我不想在client_name上使用GROUP BY,因爲在這種情況下,我會放棄該產品。

是否有可能在一個查詢中執行該操作,或者是否必須執行一次select以進行計數,另一次才能得到結果?

我注意到Stack中給出的所有例子都是關於Count/Distinct只返回數字而不是數字和結果。

謝謝

PS:我正在運行MariaDB。

+0

爲什麼在詢問「有多少客戶」時包含TAB_PROD? –

+0

因爲我想要結果中的產品和客戶:Henri是客戶,Potatoe是Henri購買的產品。問題來自於當你添加計數(明顯)時你放棄了結果。 – Peter

+0

您的要求「現在我想知道我有多少個不同的客戶」,沒有提到產品。請重新說明。 –

回答

1
SELECT 
     (SELECT COUNT(DISTINCT client_name) FROM TAB_CLIENT) AS Number_of_clients, 
     client_name, 
     prod_id 
    FROM TAB_CLIENT 
    INNER JOIN TAB_PROD ON prod_client = client_name 
+0

好的,我接受這個答案,但這是我所害怕的。沒有兩個選擇似乎是不可能的。謝謝。 – Peter