Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn MySQL có thể chuyển hàng thành cột không?

Đôi khi, bước đầu tiên để giải quyết vấn đề của bạn là biết nó được gọi là gì. Sau đó, nó chỉ đơn giản là vấn đề của googling. Những gì bạn đang cố gắng tạo được gọi là bảng tổng hợp hoặc báo cáo bảng chéo . Đây là liên kết giải thích cách tạo bảng tổng hợp trong MySQL . Và đây là hướng dẫn chuyên sâu hơn .

CẬP NHẬT:

Bây giờ bạn đã cập nhật câu hỏi, tôi có ý tưởng rõ ràng hơn về những gì bạn đang cố gắng hoàn thành. Tôi sẽ cung cấp cho bạn một giải pháp thay thế tương tự nhưng không chính xác những gì bạn muốn dựa trên GROUP_CONCAT của MySQL chức năng.

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;

Tôi đã xác minh truy vấn này như sau. Đầu tiên, thiết lập:

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

Và bây giờ là truy vấn và kết quả:

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. MySQL trả về bản ghi đầu tiên và cuối cùng cho các kết quả giống hệt nhau liên tiếp

  2. Tham số MyBatis từ HashMap

  3. Chart.js - Lấy dữ liệu từ cơ sở dữ liệu bằng mysql và php

  4. Làm thế nào để chuyển đổi PDO sang mysqli?

  5. Giao điểm truy vấn với Activerecord