2017-04-12 11 views
0

これはMySQLのための解決策を見つけるいくつかの問題があります。行の2つの異なる値が異なる列の同じ値で記述されている時間の数を数えることができるクエリを作成したいと思います。同じ行の接続を他の列を介してSQLを検索

より具体的には、私が2人の発明者が同じ特許を共同して研究した回数を知りたいと思います。私はエクセルで手動で出力を作成しましたが、SQLコードでは解決策がありません。

私が持っているテーブルには、以下のいずれかです。

Patent  Inventor 
04412478 D0456998-2 
04926296 D0456998-2 
05597593 D0456998-1 
06267663 07225494-3 
06299015 07225494-3 
06299015 D0456998-1 
06301919 07225494-3 
06301919 D0456998-1 
06311837 D0456998-1 
06311837 D0456998-2 
06360395 07225494-3 
06360395 D0456998-1 
06360395 D0456998-2 
06371294 07225494-3 
06371294 D0456998-1 
06371294 D0456998-2 
06546585 D0456998-1 
06546585 D0456998-2 
06663482 07225494-3 
06988292 06245813-3 
06988292 06877638-0 
D0437469 07225494-3 
D0465088 07225494-3 
D0465088 D0456998-1 
D0465088 D0456998-2 

これは、クエリの出力のようになります。

Inventor 1 Inventor 2 Collaborations 
06245813-3 06877638-0 1 
07225494-3 D0456998-1 5 
07225494-3 D0456998-2 3 
D0456998-1 D0456998-2 5 

私はこの問題に取り組むだろうか?どんな提案や助けにも大いに感謝します!

+0

あなたは自分自身にテーブルを参加させます。まだ苦労している? http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry

+0

@Strawberryがほとんどあります。私はこれまでにこれまで来た:https://pastebin.com/PpkgBqL3私はちょうど列1と2上の重複をフィルタリングする必要がありますか? – Philip

答えて

0
SELECT x.inventor inventor1 
    , y.inventor inventor2 
    , COUNT(*) total 
    FROM my_table x 
    JOIN my_table y 
    ON y.patent = x.patent 
    AND y.inventor < x.inventor 
GROUP 
    BY x.inventor 
    , y.inventor; 
+0

ああ完璧!私が行方不明になっていたのは<<記号でした。助けてくれてありがとう! – Philip

+0

...残りのクエリに加えて! – Strawberry

関連する問題