0
鑑於以下兩個表:計數加入
<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紅(1)和1綠(1)(1 + 1)= 2;
它似乎強制查詢清除Table2中的所有值,而不是那些匹配連接條件的值。我在這裏敲我的頭。考慮到我的最終目標,我完全可以使用子查詢來實現這一目標,但如果我不需要將它們與連接一起使用,那就太棒了。
乾杯
啊,赦免。我需要顏色的不同值。如果表2中有額外的1紅色,我會得到3的顏色計數結果。我會修改這個問題。 – Rooster 2014-10-16 18:17:17
@Rooster,更新了答案,需要在COUNT – radar 2014-10-16 18:19:53
內部添加DISTINCT,在所有Apple結果上返回1,表示ColorCount – Rooster 2014-10-16 18:23:24