Rumah  >  Soal Jawab  >  teks badan

mysql - Bagaimana untuk melaksanakan pertanyaan persatuan berbilang jadual?

Table A
LogID    UserId    Date
00001    0001      05-01
00002    0002      05-02
00003    0003      05-02
00004    0004      05-02
00005    0003      05-03
00006    0001      05-03  
00007    0002      05-03

Table B
UserId    Status
0001      Active
0002      Active  
0003      Active
0004      Inactive

Table C
UserId    Province
0001      Yunnan
0002      Fujian  
0003      Fujian
0004      Beijing

Di atas adalah tiga jadual dalam pangkalan data, berkaitan melalui ID Pengguna. Jadual A ialah jadual maklumat log masuk pengguna dengan LogID sebagai kunci utama Jadual B menyimpan status aktif pengguna, dan Jadual C menyimpan maklumat lokasi geografi pengguna. Sekarang saya ingin mendapatkan jumlah kumulatif bilangan negeri lain berdasarkan kumpulan tarikh dalam jadual A. Hasil pulangan yang dijangkakan ialah:

Date    Active    Inactive    Yunnan    Fujian    Beijing
05-01   1         0           1         0         0   
05-02   2         1           0         2         1   
05-03   3         0           1         2         0

Bolehkah ia dilaksanakan dengan pernyataan SQL?

巴扎黑巴扎黑2688 hari yang lalu1099

membalas semua(1)saya akan balas

  • 给我你的怀抱

    给我你的怀抱2017-07-04 13:46:12

    Logik perniagaan jadual ini sangat longgar, jadi saya tidak akan menulisnya untuk anda dengan cara yang longgar hanya menganggap hubungan jadual ABC anda sebagai banyak-dengan-satu:

    select 
        a.date,
        sum(case when b.status='Active' then 1 else 0 end) 'Active',
        sum(case when b.status='Inactive' then 1 else 0 end) 'Inactive',
        sum(case when c.province ='Yunnan' then 1 else 0 end) 'Yunnan',
        sum(case when c.province ='Fujian' then 1 else 0 end) 'Fujian',
        sum(case when c.province ='Beijing' then 1 else 0 end) 'Beijing'
     from a left join b on a.userid=b.user_id join c on a.user_id=c.user_id 
     group by a.date order by a.date;

    balas
    0
  • Batalbalas