mysql - Comment implémenter une requête d'association multi-tables?
巴扎黑
巴扎黑 2017-07-04 13:44:12
0
1
1115
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

Les trois tables ci-dessus dans la base de données, liées via l'ID utilisateur. Le tableau A est un tableau d'informations de connexion utilisateur avec LogID comme clé primaire ; le tableau B stocke l'état actif de l'utilisateur et le tableau C stocke les informations de localisation géographique de l'utilisateur. Maintenant, je veux obtenir la somme cumulée du nombre d'autres états en fonction du regroupement de dates dans le tableau A. Le résultat de retour attendu est :

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

Peut-il être implémenté avec une instruction SQL ?

巴扎黑
巴扎黑

répondre à tous(1)
给我你的怀抱

La logique métier de cette table est très lâche, je ne vais donc pas l'écrire pour vous de manière vague. Traitez simplement votre relation de table ABC comme plusieurs à un :

.
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;
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal