Mysql
 sql >> база данни >  >> RDS >> Mysql

Може ли MySQL заявка да превърне редовете в колони?

Понякога първата стъпка към решаването на проблема ви е да знаете как се нарича. След това е просто въпрос на гугъл. Това, което се опитвате да създадете, се нарича въртяща се таблица или отчет с кръстосани таблици . Ето връзка, обясняваща как да създадете въртеливи таблици в MySQL . А ето и по-задълбочен урок .

АКТУАЛИЗИРАНЕ:

След като актуализирахте въпроса, имам по-ясна представа какво се опитвате да постигнете. Ще ви дам алтернативно решение, което е подобно, но не точно какво искате въз основа на GROUP_CONCAT на 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;

Проверих това запитване, както следва. Първо настройката:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL заявка за изчисляване на баланса по сметката

  2. Как да надстроите MySQL на CentOS

  3. Как да оптимизирам търсенето по дата и час в Mysql?

  4. PHP, MYSQL Autocomplete не работи

  5. MySQL:Времето за изчакване на заключване е превишено