sql >> Database teknologi >  >> RDS >> Mysql

Kan en MySQL-forespørgsel omdanne rækker til kolonner?

Nogle gange er det første skridt til at løse dit problem at vide, hvad det hedder. Herefter er det bare et spørgsmål om at google. Det, du forsøger at oprette, kaldes en pivottabel eller krydstabulatorrapport . Her er et link, der forklarer, hvordan man opretter pivottabeller i MySQL . Og her er en mere dybdegående tutorial .

OPDATERING:

Nu hvor du har opdateret spørgsmålet, har jeg en klarere idé om, hvad du forsøger at opnå. Jeg vil give dig en alternativ løsning, som ligner, men ikke præcis hvad du ønsker baseret på MySQL's GROUP_CONCAT funktion.

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;

Jeg har verificeret denne forespørgsel som følger. Først opsætningen:

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

Og nu forespørgslen og resultaterne:

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. Oprettelse af en database dump for specifikke tabeller og poster Postgres

  2. uønsket ledende tomrum på orakelnummerformat

  3. Kan ikke bruge tabellen med navnet bruger i postgresql hibernate

  4. Tilføj en indre joinforbindelse til mySQL GROUP_CONCAT-sætning