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

3つのテーブルを結合するMySQLクエリ

    あなたはこのように意味します:

    select
        a.project_id,
        b.list_id,
        c.item_id
    from
        projects a
            join lists b
                on a.project_id=b.project_id
            join items c
                on b.list_id=c.list_id
    

    出力は次のようになります:

    project_id | list_id | item_id
     1         | 5       |  45
     1         | 5       |  46
     1         | 8       |  12
    

    それとも、そのすべての部分を1行で返したいですか?

    単一の行が必要な場合は、次の行に沿って何かを行うことができます:

    select
        a.project_id,
        group_concat(b.list_id) as listIDs,
        group_concat(c.item_id) as itemIDs
    from
        projects a
            join lists b
                on a.project_id=b.project_id
            join items c
                on b.list_id=c.list_id
    

    ただし、PHPでは、グループ化されたすべてのものを処理するのが面倒になります。

    出力は次のようになります:

    project_id | list_id | item_id
     1         | 5,8     |  45, 46, 12
    

    また、2つを組み合わせて、両方の世界を最大限に活用することもできます。

    select
        a.project_id,
        b.list_id as listIDs,
        group_concat(c.item_id) as itemIDs
    from
        projects a
            join lists b
                on a.project_id=b.project_id
            join items c
                on b.list_id=c.list_id
    

    出力は次のようになります:

    project_id | list_id | item_id
     1         | 5       |  45, 46
     1         | 8       |  12
    


    1. MySQLはいつ列のインデックスを更新しようとしますか?

    2. データベース駆動型Webサイトについて知っておくべきこと

    3. MySQLインデックスはどのように機能しますか?

    4. PostgreSQLで序数を作成する方法