sql >> データベース >  >> RDS >> Mysql

MYSQL / PHPは、特定のアイテムに関連付けられている最も一般的なアイテムを検索します

    選択したアイテムを含むすべてのコレクションを取得するクエリから始めます。

    SELECT collectionId
    FROM wishLists
    WHERE itemId = 876
    

    これから、それらのコレクション内の他のすべてのitemIdを取得する必要があります。

    SELECT itemId
    FROM wishLists
    WHERE collectionId IN (above query)
    AND itemId != 876
    

    これは結合として書き直すことができます:

    SELECT a.itemId
    FROM wishLists AS a
    JOIN wishLists AS b ON a.collectionId = b.collectionId
    WHERE a.itemId != 876 AND b.itemId = 876
    

    これで、これの繰り返しを数えて、最も一般的なものを見つけることができます:

    SELECT a.itemId
    FROM wishLists AS a
    JOIN wishLists AS b ON a.collectionId = b.collectionId
    WHERE a.itemId != 876 AND b.itemId = 876
    GROUP BY a.itemId
    ORDER BY COUNT(*) DESC
    

    LIMIT nを追加します 上位n個のアイテムを表示するための最後の句。




    1. Dapper.NETを使用してデータベースにC#リストを挿入する方法

    2. 致命的なエラー:PHP5.4.22およびMySQL5.5をApache2.4.7に接続しているときに、未定義の関数mysqli_connect()を呼び出します...

    3. MaxmindGeolitecityデータベースでのIPアドレス表現

    4. EBSからエフェメラルストレージにデータを移動すると、MySQLクエリのパフォーマンスが向上しますか?