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

1対多の関係で結合を使用してSQLクエリを最小化する

    単純な結合を使用して、1つのクエリですべてを取得できます。例:

    SELECT   d.name AS 'department', p.name AS 'name'
    FROM     department d
      LEFT JOIN people p ON p.department_id = d.id
    ORDER BY department
    

    これによりすべてのデータが返されますが、とにかくすべての人を反復処理する必要があるため、消費するのは少し面倒です。さらに進んで、それらをグループ化できます:

    SELECT   d.name AS 'department',
             GROUP_CONCAT(p.name SEPARATOR ', ') AS 'name'
    FROM     department d
      LEFT JOIN people p ON p.department_id = d.id
    GROUP BY department
    

    出力として次のようなものが得られます:

    department | name
    -----------|----------------
    sales      | Tom, Bill, Rachel
    marketing  | Jessica, John
    


    1. 列名としてキーを使用して配列を挿入するPDO

    2. PostgreSQLエラー:関数to_tsvector(文字が変化します、不明)が存在しません

    3. PostgreSQL12のデータベース管理と監視

    4. MariaDBでのPOW()のしくみ