簡體   English   中英

將列添加到一個表中另一個是COUNT個

[英]Add Column to one Table that is COUNT of another

我在表Subscribers有一個訂戶列表。 每次他們收到訂閱的副本時,都會在Subscriptions_Fulfilments為每個Subscribers.ID創建一個新記錄。

我可以創建一個表,其中顯示每個訂戶ID以及通過以下查詢獲得的副本數:

SELECT Sub_ID, COUNT(Sub_ID) fcount FROM `Subscriptions_Fulfilments` 
GROUP BY Sub_ID

但是我需要創建一個復合查詢,該查詢返回Subscribers以及一列顯示Subscriptions_Fulfilments的COUNT(Sub_ID)的列。

所以我有兩個問題:

A)您將如何查詢以創建一個表,該表根據Subscriptions_Fulfilments中該訂閱者ID的數量顯示每個訂閱者及其接收訂閱的次數?

B)我的假設是,完成此操作的單個MySql查詢要比運行兩個查詢(上面的查詢和SELECT * FROM Subscriptions )並在PHP中合並結果數組效率更高。 我有一個知道答案的感覺,但我想今天積極學習一些新知識。

不幸的是,經過太多的嘗試,我顯然對查詢的能力不夠強,過去的查詢也很少顯示出來。 我很抱歉,如果這最終是一個重復,我在詢問之前經過了漫長而艱苦的搜索,但是要精確地搜索Query help卻非常困難...

關系數據庫的一大優點是能夠以允許該功能的方式進行表中數據的聯接和組合,而不必將其實際存儲在單獨的表中。

您可以使用以下子查詢來完成此操作:

SELECT Subscribers.name, fulfilments.count FROM Subscribers
INNER JOIN (
     SELECT id, count(*) as count FROM Subscriptions_Fulfilments
     GROUP BY Sub_Id
 )fulfilments ON subscribers.id = fulfilments.id

這可能不是您要找的100%,而且我可能弄錯了您的名字,但希望這會開始使您正確。

這是一個簡單的示例,顯示訂戶ID和已收到的訂戶編號。 希望能幫助到你。

步驟1:從“訂戶”表中選擇ID
步驟2:選擇每個訂閱者收到的訂閱數。
步驟3:根據ID將兩個表都加入。

SELECT SubId, noSub FROM 
Subscribers sb JOIN (SELECT SubId AS sid, COUNT(*)AS noSub FROM Subscriptions_Fulfilments GROUP BY SubId)AS ss ON sb.SubId = ss.sid

只需嘗試執行以下查詢:

選擇不同的Sub_ID,從(SELECT Sub_ID,COUNT(Sub_ID)fcount FROM Subscriptions_Fulfilments GROUP BY Sub_ID)開始計數;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM