簡體   English   中英

計算左聯接中不同的特殊右列的數量

[英]Count number of distinct particuliar right columns in a left join

給定以下兩個表:

 <div style="float:left;width:48%;"> <label>Table1</label> <table> <thead style="background:green;"> <tr> <th>ID</th> <th>Name</th> </tr> </thead> <tbody style="background:yellow;"> <tr> <td>1</td> <td>Apple</td> </tr> <tr> <td>2</td> <td>Orange</td> </tr> <tr> <td>3</td> <td>Banana</td> </tr> </tbody> </table> </div> <div style="float:left;width:48%;"> <label>Table2</label> <table> <thead style="background:green;"> <tr> <th>t1ID</th> <th>Color</th> </tr> </thead> <tbody style="background:yellow;"> <tr> <td>1</td> <td>Red</td> </tr> <tr> <td>1</td> <td>Green</td> </tr> <tr> <td>3</td> <td>Yellow</td> </tr> <tr> <td>1</td> <td>Red</td> </tr> </tbody> </table> </div> 

我正在嘗試創建一個聯接,其中也包含許多不同的匹配項。

所以我要尋找這樣的結果集:

 <label>Results</label> <table> <thead style="background:green;"> <tr> <th>ID</th> <th>Name</th> <th>ColorCount</th> </tr> </thead> <tbody style="background:yellow;"> <tr> <td>1</td> <td>Apple</td> <td>2</td> </tr> <tr> <td>2</td> <td>Orange</td> <td>0</td> </tr> <tr> <td>3</td> <td>Banana</td> <td>1</td> </tr> </tbody> </table> 

我的基本查詢是:

SELECT Table1.ID, Table1.Name, COUNT(DISTINCT Table2.Color) AS ColorCount FROM
Table1 LEFT JOIN Table2 ON Table1.ID=Table2.t1ID

但是,這只會返回一行數據,例如:

1    Apple    3

上面計算的是所有不同的顏色,而不是2個red(1)和1個green(1)(1 + 1)= 2;

似乎是強制查詢從表2中區分出所有值,而不是匹配聯接條件的那些值。 我在這里撞頭。 考慮到我的最終目標,我絕對可以使用子查詢來實現這一點,但是如果我不需要與聯接一起使用它們,那就太好了。

干杯

您可以使用GROUP BYLEFT JOIN

SELECT ID , T1.Name, COUNT(DISTINCT T2.Color) as ColorCount
FROM Table1 T1
LEFT JOIN Table2 T2
ON T1.ID = T2.t1ID
GROUP BY ID,T1.NAME

暫無
暫無

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

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