mysql - Bagaimana untuk melaksanakan pertanyaan persatuan berbilang jadual?
巴扎黑
巴扎黑 2017-07-04 13:44:12
0
1
1107
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?

巴扎黑
巴扎黑

membalas semua(1)
给我你的怀抱

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;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan