sql >> Database >  >> RDS >> Mysql

Kan een MySQL-query rijen in kolommen veranderen?

Soms is weten hoe het heet de eerste stap om uw probleem op te lossen. Daarna is het een kwestie van googlen. Wat u probeert te maken, wordt een draaitabel genoemd of kruistabelrapport . Hier is een link waarin wordt uitgelegd hoe u draaitabellen in MySQL maakt . En hier is een meer diepgaande zelfstudie .

UPDATE:

Nu je de vraag hebt bijgewerkt, heb ik een duidelijker idee van wat je probeert te bereiken. Ik geef je een alternatieve oplossing die vergelijkbaar is, maar niet exact wat je wilt op basis van MySQL's GROUP_CONCAT functie.

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;

Ik heb deze query als volgt geverifieerd. Eerst de setup:

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);

En nu de vraag en resultaten:

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. SQL Server:Tabel Meta-Data extraheren (beschrijving, velden en hun datatypes)

  2. Verbind aws ec2 mysql met mijn lokale Java-toepassing

  3. Mysql verandert standaard tabeltekenset in databasetekenset

  4. Gegevens invoegen met mysqli