Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bisakah kueri MySQL mengubah baris menjadi kolom?

Terkadang langkah pertama untuk memecahkan masalah Anda adalah mengetahui apa namanya. Setelah itu tinggal googling aja. Apa yang Anda coba buat disebut tabel pivot atau laporan tab silang . Berikut ini tautan yang menjelaskan cara membuat tabel pivot di MySQL . Dan inilah tutorial yang lebih mendalam .

PERBARUI:

Sekarang setelah Anda memperbarui pertanyaan, saya memiliki gagasan yang lebih jelas tentang apa yang ingin Anda capai. Saya akan memberi Anda solusi alternatif yang serupa tetapi tidak persis apa yang Anda inginkan berdasarkan GROUP_CONCAT" MySQL fungsi.

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;

Saya telah memverifikasi kueri ini sebagai berikut. Pertama 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);

Dan sekarang kueri dan hasilnya:

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. Cara memilih satu baris berdasarkan nilai maksimal dalam beberapa baris

  2. Konversi String Waktu ke Jam Desimal PHP

  3. Butuh bantuan untuk mengakses database mysql menggunakan node.js

  4. php artisan migration throw [Pengecualian PDO] Tidak dapat menemukan driver - Menggunakan Laravel

  5. Kolom peningkatan otomatis MySQL melonjak 10- mengapa?