非常に難しい質問で私を助けてください。SQL:JOINなしの集約ペア(挑戦的)
私は2つのカラムを持つMySQLのDBMSに「itemslogを」テーブルを持っている:「ユーザーID」と「ITEMID」、次のようになります。
| user1 | item 1 |
| user1 | item 2 |
| user2 | item 1 |
| user2 | item 2 |
| user2 | item 3 |
私はアイテムのすべてのペアを持っているどのくらいのユーザーカウントする必要がある、i.g.
SELECT
t1.itemname,
t2.itemname,
count(*)
FROM
itemslog AS t1
CROSS JOIN itemslog AS t2 ON t1.userid = t2.userid
WHERE
t1.itemname < t2.itemname
GROUP BY
t1.itemname, t2.itemname;
しかし、それは計算の多くを取り、私の状況では、(私はおよそ20万を持って無駄です:
| item1 | item2 | 2 |
| item1 | item3 | 1 |
| item2 | item3 | 1 |
通常、私たちはそのように、JOINの操作に基づいてクエリを使用することができます。そのように答えます行)。私に助言を与えることができます、それを行う別の方法がありますか?前もって感謝します!
ここに数えようとしていることはわかりません。特定のユーザーに特定のアイテムがあるかどうかを確認しますか?または、他の何か? –
'itemid'が主キーである別のテーブル' items'を持っていますか?参照テーブルですか? – trincot
すべてのユーザーは、任意の量のアイテムを運ぶことができます。アイテムのすべてのペアについて、それを運ぶユーザーの数を数えたいと思います。例item1とitem2のペアでは2人のユーザーが参加し、item1とitem3のペアは1つのみです。 –