2015-06-08 74 views
1

鑑於以下SQLite表:SQL:計值的數量兩個不同的條目具有

Name | Lived_in 
---------------- 
John | Canada 
John | UK 
James | Canada 
James | UK 
Mary | UK 
Mike | USA 

有,列出了不同的值COL_1(地名)形成的對以任何方式,旁邊的數它們在col_2中分享的值(Lived_in),並且由後者排序?

在我的例子,這將產生:

Node A | Node B | Shared values 
------------------------------- 
John | James | 2 
John | Mary | 1 
James | Mary | 1 

注意:如果不能這樣做,我會接受它返回在X的關係都對共同的答案,在這裏我要指定每個請求的X值。

回答

3

我也建議做內部聯接,但我會指定的name值不能等於

select t1.name as name1, t2.name as name2, count(*) 
from table t1 inner join 
    table t2 
    on t1.Lived_in = t2.Lived_in 
    and t1.name > t2.name 
group by t1.name,t2.name 

注意在不等式運算符中使用>而不是<>用於避免重複(John-James和James-John)

SQLFiddle:http://sqlfiddle.com/#!7/26a76/9

+0

只是缺少'按次數(*)desc'在結束! – bsuire

0

你可以用做自聯接和group by

select t1.name, t2.name, count(*) 
from table t1 join 
    table t2 
    on t1.Lived_in = t2.Lived_in 
group by t1.name, t2.name; 
+0

它似乎並不像它的工作... – bsuire

+0

@bsuire。 。 。那很好笑。我在'group by'中有一個錯字,但你似乎已經得到了你的解決方案。 –

相關問題