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

2つの異なるテーブルから合計を追加する

    normalizeすることを強くお勧めします 他の人が提案したようにあなたのデータ。

    現在の設計に基づいて、 FIND_IN_SET あなたが望む結果を達成するために。

    SELECT 
     M.id,
     M.name,
     COUNT(*) total
    FROM members M 
    INNER JOIN videos V ON FIND_IN_SET(M.name,V.members) > 0
    GROUP BY M.name
    ORDER BY M.id
    

    デモを見る

    指定されたデータセットに対してこのクエリを実行すると、次のような出力が得られます。

    | id |  name | total |
    |----|-------|-------|
    |  1 |   Tom |     2 |
    |  2 |   Bob |     2 |
    |  3 |  Zack |     3 |
    |  4 |   Dan |     3 |
    |  5 | Casey |     2 |
    

    必読

    データベース列に区切りリストを保存するのは本当に悪いですか?

    もっと

    これがあなたのvidoesのやり方です データを正規化すると、テーブルは次のようになります。

    videos

    id   member_id
    


    1. 2つのフィールドを使用しないことでグループ化する合計

    2. MySQLの日付をPHPでフォーマットする

    3. MysqlクエリでPHP関数strtotimeを使用できますか

    4. Postgresqlでロック解除された行を選択します