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

MySQLクエリは行を列に変換できますか?

    問題を解決するための最初のステップは、それが何と呼ばれるかを知ることである場合があります。その後、それは単にグーグルの問題です。作成しようとしているものは、ピボットテーブルと呼ばれます。 またはクロス集計レポートMySQLでピボットテーブルを作成する方法を説明するリンクは次のとおりです 。そして、ここに、より詳細なチュートリアル があります。 。

    更新:

    あなたが質問を更新したので、私はあなたが何を達成しようとしているのかについてより明確な考えを持っています。類似しているが正確にではない代替ソリューションを提供します MySQLのGROUP_CONCATに基づいて必要なもの 機能。

    select t1.FirstName, t1.LastName, group_concat(concat(t2.FirstName, ' ', t2.LastName))
    from member_information as t1
    left outer join member_dependent_information as t2 on t2.MemberID=t1.MemberID
    group by t1.MemberID;
    

    このクエリを次のように確認しました。最初のセットアップ:

    create table member_information (
        MemberID int unsigned auto_increment primary key,
        FirstName varchar(32) not null,
        LastName varchar(32) not null
    ) engine=innodb;
    
    create table member_dependent_information (
        MemberID int unsigned not null,
        FirstName varchar(32) not null,
        LastName varchar(32) not null,
        Type int unsigned not null,
        foreign key (MemberID) references member_information(MemberID)
    ) engine=innodb;
    
    insert into member_information (MemberID, FirstName, LastName) values
    (1, 'John', 'Harris'),
    (2, 'Sarah', 'Thompson'),
    (3, 'Zack', 'Lewis');
    
    insert into member_dependent_information (MemberID, FirstName, LastName, `Type`) values
    (1, 'Amy', 'Harris', 1),
    (2, 'Bryan', 'Thompson', 1),
    (2, 'Dewey', 'Thompson', 2),
    (2, 'Tom', 'Thompson', 2),
    (3, 'Harry', 'Lewis', 2),
    (3, 'Minka', 'Lewis', 1);
    

    そして今、クエリと結果:

    mysql> select t1.FirstName, t1.LastName, group_concat(concat(t2.FirstName, ' ', t2.LastName))from member_information as t1
        -> left outer join member_dependent_information as t2 on t2.MemberID=t1.MemberID
        -> group by t1.MemberID;
    +-----------+----------+------------------------------------------------------+
    | FirstName | LastName | group_concat(concat(t2.FirstName, ' ', t2.LastName)) |
    +-----------+----------+------------------------------------------------------+
    | John      | Harris   | Amy Harris                                           | 
    | Sarah     | Thompson | Bryan Thompson,Dewey Thompson,Tom Thompson           | 
    | Zack      | Lewis    | Harry Lewis,Minka Lewis                              | 
    +-----------+----------+------------------------------------------------------+
    3 rows in set (0.00 sec)
    


    1. MySQLが停止した場合の手順

    2. ドラッグアンドドロップした後、SQLiteにRecyclerViewアイテムの新しい位置を保存します

    3. mysqlクエリでの距離計算

    4. MySQL接続を閉じる(PHP)